- 題名: DataGridViewからのフォーカス移動
- 日時: 2009/10/07 20:16:16
- ID: 25543
- この記事の返信元:
- (なし)
- この記事への返信:
- [25544] Re[1]: DataGridViewからのフォーカス移動2009/10/07 20:26:44
- [25545] Re[1]: DataGridViewからのフォーカス移動2009/10/07 22:02:24
- ツリーを表示
お疲れ様です。 DataGridViewを継承し、以下の2メソッドのオーバーライドでいけるようです。 ・ProcessCmdKey・・・編集モード時のTabキーを拾う ・ProcessDataGridViewKey・・・非編集モード時のTabキーを拾う ' DataGridViewEx1とTextBox1をFormに配置してください Public Class Form1 Protected Overrides Sub OnLoad(ByVal e As System.EventArgs) With Me.DataGridViewEx1 .RowCount = 10 .ColumnCount = 5 End With MyBase.OnLoad(e) End Sub Private Sub DataGridViewEx1_TabKeyPressed(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles DataGridViewEx1.TabKeyPressed Me.TextBox1.Focus() End Sub End Class Public Class DataGridViewEx Inherits DataGridView Public Event TabKeyPressed As EventHandler Protected Overridable Sub OnTabKeyPressed(ByVal e As EventArgs) RaiseEvent TabKeyPressed(Me, e) End Sub Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, _ ByVal keyData As System.Windows.Forms.Keys) As Boolean Const WM_KEYDOWN As Integer = &H100 If msg.Msg = WM_KEYDOWN Then If keyData = Keys.Tab Then Me.OnTabKeyPressed(EventArgs.Empty) Return True End If End If Return MyBase.ProcessCmdKey(msg, keyData) End Function Protected Overrides Function ProcessDataGridViewKey( _ ByVal e As System.Windows.Forms.KeyEventArgs) As Boolean If e.KeyCode = Keys.Tab Then Me.OnTabKeyPressed(EventArgs.Empty) Return True End If Return MyBase.ProcessDataGridViewKey(e) End Function End Class
分類:[.NET]
初めての書き込みです。よろしくお願いします。
DataGridViewについて質問があります。
ご存知の方は教えていただけると大変助かります。
内容としてはDataGridViewにフォーカスがある状態でTabキーを押すと
次のButtonにフォーカスが移動するという動作を実現したいです。
ただコントロールを配置しただけではDataGridViewのセル内を
カーソルが移動するだけです。
色々試したのですがうまくいきません。
KeyDownイベントではTabキーを拾ってくれないようですし・・・。
ご教授よろしくお願いします。