- - PR -
DataGridでのTabキー押下処理について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-08-07 22:21
お世話になります。
現在DataGridを使用しており、以下のような処理をしようとしています。 DataGridのセルでTabキーを押下した場合、通常は左上〜右上〜左下〜右下と フォーカスが移動し、右下のセルでTabキーを押すと次のコントロールに フォーカスが移動します。 これをDataGrid上でTabキーを押下した場合、すぐに次のコントロールに フォーカスを移動させることはできないでしょうか? (VB6のFlexGridの動きを想定しています) 過去ログを検索し、DataGridTextBoxColumnオブジェクトのKeyDownイベントを 取得する方法を試してみました。 Dim t As DataGridTextBoxColumn For Each t In DataGrid1.TableStyle(0).GridColumnStyles AddHandler t.TextBox.KeyDown, AddressOf t_KeyDown Next Private Sub t_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) If e.KeyCode = Keys.Tab Then Text1.Focus() '次のコントロールにフォーカスを移動 End If End Sub 実行したところ、KeyDownイベントは発生したのですが、肝心のTabキーを押下した場合、 KetDownイベントが発生しません。 (文字キー、ファンクションキーは拾えますが、Tab、Enter、カーソルは拾えません) よい対応策をご存知の方がいらっしゃいましたら是非教えて下さい。 | ||||
|
投稿日時: 2003-08-08 08:25
こんにちは。
全く見ていないので見当はずれならごめんなさい。DataGridTextBoxColumnではなく、DataGridのKeyDownイベントで拾うとか。 Tab、カーソルキー、Enterと言うことなので、これらは非印字…テキストボックス内で文字として意味を持たないもですから、入ってこないのではないかと... | ||||
|
投稿日時: 2003-08-08 09:38
e.KeyValue==(int)Keys.Tabでとれませんか?
| ||||
|
投稿日時: 2003-08-11 22:16
遅くなりましたがJittaさん、seriousさん、ご回答ありがとうございます。
>Jittaさん DataGridのKeyDownイベントを試してみましたが、Tab、Enterはおろか、 文字キー押下時もKeyDownイベントが発生しませんでした。 >seriousさん e.KeyValueですが、どうもTab押下時はKeyDownイベントそのものが 発生しないようで、KeyDownイベントプロシージャが実行されません。 引き続き、いろいろ試してみようと思います。 | ||||
|
投稿日時: 2003-08-12 14:59
お世話になっております。いろいろ試した結果、DataGridを継承した
クラスを作成し、ProcessCmdKeyメソッドをオーバーライドして、 ProcessCmdKey内でTabキー取得時、予め指定したコントロールの Focusメソッドを実行する、という方法で実現できました。
これからもよろしくお願いいたします。 |
1