- 題名: 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キーを拾ってくれないようですし・・・。
ご教授よろしくお願いします。