[MLTR07097]ショートカットによるコントロール間の遷移でCellValidatingイベントが発生しない

文書番号 : 26552     文書種別 : 制限事項     最終更新日 : 2008/11/28
文書を印刷する
対象製品
MultiRow for Windows Forms 5.0J
発生環境
動作保証環境と同じ
詳細
ショートカットキーを使用して他のコントロールにフォーカスを移動すると、GcMultiRow.CellValidating イベントが発生しません。
回避方法
カスタムアクションを定義する方法で GcMultiRow.CellValidating イベントを起こすことが可能です。

[Visual Basic]
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)
  gcMultiRow1.ShortcutKeyManager.Register(New myTabAction(), Keys.Tab)
  gcMultiRow1.ShortcutKeyManager.Register(New myShiftTabAction(), Keys.Tab Or Keys.Shift)
End Sub

Public Class myTabAction
  Implements IAction
  #Region "IAction メンバ"
 
  Public Function CanExecute(ByVal target As GcMultiRow) As Boolean
    Return True
  End Function
 
  Public ReadOnly Property DisplayName() As String
    Get
      Return "myTab"
    End Get
  End Property
 
  Public Sub Execute(ByVal target As GcMultiRow)
    target.FindForm().Validate()
    ComponentActions.SelectNextControl.Execute(target)
  End Sub
End Class

#End Region
Public Class myShiftTabAction
  Implements IAction
  #Region "IAction メンバ"
 
  Public Function CanExecute(ByVal target As GcMultiRow) As Boolean
    Return True
  End Function
 
  Public ReadOnly Property DisplayName() As String
    Get
      Return "myShiftTabAction"
    End Get
  End Property
 
  Public Sub Execute(ByVal target As GcMultiRow)
    target.FindForm().Validate()
    ComponentActions.SelectPreviousControl.Execute(target)
  End Sub
End Class

#End Region


[C#]
private void Form1_Load(object sender, EventArgs e)
{
  gcMultiRow1.ShortcutKeyManager.Register(new myTabAction(), Keys.Tab);
  gcMultiRow1.ShortcutKeyManager.Register(new myShiftTabAction(), Keys.Tab | Keys.Shift);
}

public class myTabAction : IAction
{
  #region IAction メンバ

  public bool CanExecute(GcMultiRow target)
  {
    return true;
  }

  public string DisplayName
  {
    get { return "myTab"; }
  }

  public void Execute(GcMultiRow target)
  {
    target.FindForm().Validate();
    ComponentActions.SelectNextControl.Execute(target);
  }

  #endregion
}
public class myShiftTabAction : IAction
{
  #region IAction メンバ

  public bool CanExecute(GcMultiRow target)
  {
    return true;
  }

  public string DisplayName
  {
    get { return "myShiftTabAction"; }
  }

  public void Execute(GcMultiRow target)
  {
    target.FindForm().Validate();
    ComponentActions.SelectPreviousControl.Execute(target);
  }

  #endregion
}

この文書は、以前は次のFAQ IDで公開されていました : 7770