タイトル | : 派生DataGridで、セル位置の取得 |
記事No | : 6293 |
投稿日 | : 2007/09/13(Thu) 12:40 |
投稿者 | : K |
以前、マルチスレッドについて↓ http://hanatyan.sakura.ne.jp/vbnetbbs/wforum.cgi?mode=allread&no=6249&page=0 でお世話になったKと申します。
今回は派生クラスのDataGridで質問です。 http://dobon.net/vb/dotnet/datagrid/lockcolumnwidth.html このページを参考に、セル幅と行の高さを変更できなくするDataGridの派生クラスを作成しました。 テストを繰り返してたところ、行選択時にDeleteキーで行が削除される事に気づき Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Booleanを作成し、Deleteキー・Shift+Deleteキー・Ctrl+Deleteキー・Alt+Deleteキーを 無効化し、データが消えないようになりました。 さらにテストを繰り返していると、編集可能なセルでDeleteキーがきかなくなっているのに 気づきました。 編集可能なセルでは、Deleteキーを有効にしたいのですが、拡張されたDataGridでどうやったらできるのかわからず、投稿させていただきました。 セル位置を取得できればと思い、試しましたが、派生クラス内ではFormのDataGridが参照できないのでできませんでした。
長々と書きましたが、アドバイスをお願いいたします。 不明な点は、ご質問ください。 以下に、派生クラスで作成したDataGridで、Deleteキーを無効化しているソールを載せておきます。
Public Event CmdKeyEvent(ByVal keyData As System.Windows.Forms.Keys, ByRef Cancel As Boolean)
Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean 'Keysにないコードを作成 Dim Ctrl_Del As Integer = 131118 'Ctrl+Deleteキー Dim Shift_Del As Integer = 65582 'Shift+Deleteキー Dim Alt_Del As Integer = 262190 'Alt+Deleteキー
Select Case keyData 'Deleteキーが押された時は無視 Case Keys.Delete, Ctrl_Del, Shift_Del, Alt_Del Return True End Select Return MyBase.ProcessCmdKey(msg, keyData) End Function
|