セルが編集中のとき、アクティブなコントロールを識別するには?

文書番号 : 40464     文書種別 : 技術情報     登録日 : 2017/07/26     最終更新日 : 2017/07/26
文書を印刷する
対象製品
MultiRow for Windows Forms 10.0J
詳細
GcMultiRowコントロールのセルが編集中のとき、Form.ActiveControlプロパティにはセルの編集コントロールが参照されるため、Form.ActiveControl.Nameプロパティを使用してGcMultiRowコントロールを識別することができません。
この場合、IEditingControl.GcMultiRowプロパティを使用してセル編集コントロールを保持するGcMultiRowコントロールを識別できます。

[Visual Basic]
Imports GrapeCity.Win.MultiRow

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    GcMultiRow1.Template = Template.Default
    ' 常時入力モード
    GcMultiRow1.EditMode = EditMode.EditOnEnter
    ' コントロールの前にフォームでキーイベントを受け取る
    Me.KeyPreview = True
End Sub

Private Sub Form1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress
    If TypeOf Me.ActiveControl Is IEditingControl Then
        Dim cellEditingControl As IEditingControl = _
            DirectCast(Me.ActiveControl, IEditingControl)
        Console.WriteLine(cellEditingControl.GcMultiRow.Name)
    End If
End Sub

[C#]
using GrapeCity.Win.MultiRow;

private void Form1_Load(object sender, EventArgs e)
{
    gcMultiRow1.Template = Template.Default;
    // 常時入力モード
    gcMultiRow1.EditMode = EditMode.EditOnEnter;
    // コントロールの前にフォームでキーイベントを受け取る
    this.KeyPreview = true;
}

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (this.ActiveControl is IEditingControl)
    {
        IEditingControl cellEditingControl = this.ActiveControl as IEditingControl;
        Console.WriteLine(cellEditingControl.GcMultiRow.Name);
    }
}