文字列型セル(TextBoxCell)で編集時のキャレット位置を取得する方法

文書番号 : 40651     文書種別 : 使用方法     登録日 : 2017/07/26     最終更新日 : 2017/07/26
文書を印刷する
対象製品
MultiRow for Windows Forms 10.0J
詳細
編集時のキャレットの位置は、編集用コントロールのSelectionStartプロパティを使って取得できます。

下記のサンプルコードは、編集コントロールでキーを押下した時に現在のキャレット位置を取得する方法を示しています。

[Visual Basic]
Imports GrapeCity.Win.MultiRow

    Private Sub GcMultiRow1_EditingControlShowing(ByVal sender As System.Object, ByVal e As GrapeCity.Win.MultiRow.EditingControlShowingEventArgs) Handles GcMultiRow1.EditingControlShowing
        If GcMultiRow1.CurrentCell.Name = "textBoxCell1" Then
            RemoveHandler e.Control.KeyPress, AddressOf Editor_KeyPress
            AddHandler e.Control.KeyPress, AddressOf Editor_KeyPress
        End If
    End Sub

    Private Sub Editor_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
        Dim editor As TextBoxEditingControl = sender
        Debug.Print(editor.SelectionStart)
    End Sub


[C#]
    private void gcMultiRow1_EditingControlShowing(object sender, GrapeCity.Win.MultiRow.EditingControlShowingEventArgs e)
    {
        if (e.Control is TextBoxEditingControl)
        {
            TextBoxEditingControl text = e.Control as TextBoxEditingControl;
            text.KeyDown -= new KeyEventHandler(text_KeyDown);
            text.KeyDown += new KeyEventHandler(text_KeyDown);
        }
    }

    private void text_KeyDown(object sender, KeyEventArgs e)
    {
        TextBoxEditingControl editor = (TextBoxEditingControl)gcMultiRow1.EditingControl;
        Console.WriteLine(editor.SelectionStart);
    }