- - PR -
DataGridViewでフォーカスの移動を制御したい。
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-03-01 20:53
初めて質問します。
WindowsXP VB2005EEでソフトを作っています。質問はDataGridViewのカーソル 移動の制御方法についてです。DataGridViewで[Enter]キーを押すと同一列の 一行下に移動するのが既定となっているようですが、同一行で次のように移動さ せたく考えています。 1列目→3列目→2列目→4列目→次の行の1列目 この動作をさせるべく、DataGridViewのKeyDownイベントハンドラーに次のような コードを記載しました。 If e.KeyCode = Keys.Enter Then Dim Ro As Integer = DataGridView1.CurrentCell.RowIndex Dim Co As Integer = DataGridView1.CurrentCell.ColumnIndex Dim RoX As Integer = DataGridView1.RowCount If Co = 0 Then DataGridView1.CurrentCell = DataGridView1(2, Ro) ElseIf Co = 1 Then DataGridView1.CurrentCell = DataGridView1(3, Ro) ElseIf Co = 2 Then DataGridView1.CurrentCell = DataGridView1(2, Ro) ElseIf Co = 3 Then If RoX - 2 = Ro Then BindingSource1.AddNew() End If DataGridView1.CurrentCell = DataGridView1(0, Ro + 1) End If End If e.Handled = True '--KeyDownイベントの機能終了 このコードで[Enter]キーだけを押すと目的通りの動作を行いますが何かの文字 や数字を入力して[Enter]キーを押すと1行下へ移動してしまいます。 1列目→2列目→3列目→4列目→次の行の1列目と一般的な順序での移動は http://dobon.net/vb/dotnet/datagridview/enterkeymoveright.html で勉強させていただきましたが、DataGridViewで[Enter]キーを押してフォーカス の動きをカスタマイズする方法はないのでしょうか。 | ||||
|
投稿日時: 2008-03-01 21:52
DataGridViewのイベントだけでは難しいと思います。
今回の現象は「編集の終了時」のキー制御と思われますので、 恐らく記載されたコードには制御が来ていないのではないか、と思います。 解決方法としては、DataGridViewを継承しProcessDislogKeyメソッドでとか、 そういったあたりで自分は対応しています。 | ||||
|
投稿日時: 2008-03-01 22:48
Ahfさん。早速体験談を含めて説明いただき、ありがとうございます。大変助かりました。
ProcessDislogKeyメソッドはDataGridViewクラスの派生クラスを作成し ProcessDialogKeyメソッドをオーバーライドするときに使ったことがありますので 少し研究してみます。 _________________ |
1