tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトル派生DataGridで、セル位置の取得
記事No6293
投稿日: 2007/09/13(Thu) 12:40
投稿者
以前、マルチスレッドについて↓
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

[ツリー表示へ]
タイトル追加情報
記事No6294
投稿日: 2007/09/13(Thu) 12:48
投稿者
環境はWindowsXP Pro+SP2 VB.net2003です。
VB.netは始めてから2ヶ月程度です。

[ツリー表示へ]
タイトルRe: 派生DataGridで、セル位置の取得
記事No6295
投稿日: 2007/09/13(Thu) 12:56
投稿者魔界の仮面弁士
> テストを繰り返してたところ、行選択時にDeleteキーで行が削除される事に気づき

バインド元のソース側で制限をかけてみてください。
http://www.atmarkit.co.jp/fdotnet/dotnettips/108dgallownew/dgallownew.html

[ツリー表示へ]
タイトルRe^2: 派生DataGridで、セル位置の取得
記事No6296
投稿日: 2007/09/13(Thu) 14:47
投稿者
> > テストを繰り返してたところ、行選択時にDeleteキーで行が削除される事に気づき
>
> バインド元のソース側で制限をかけてみてください。
> http://www.atmarkit.co.jp/fdotnet/dotnettips/108dgallownew/dgallownew.html

魔界の仮面弁士様、いつもありがとうございます。
教えて頂いたサイトを参考に、思い通りの動作ができるようになりました。

ありがとうございました。

[ツリー表示へ]