- - PR -
deleteキーを殺す方法
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-03-05 23:55
いつも拝見して勉強させていただいております。
ただいま市販グリッドを使い開発を行っていますが、 フォーム上で「Delete」キーを殺す方法が見あたりません。 グリッドの問題かと考え、フォームのKeyDownやKeyUp、KeyPressイベントで Private Sub frmTest_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown If e.KeyValue = System.Windows.Forms.Keys.Delete then e..Handled = True End If End Sub としています。(KeyUpイベントでも同様。またKeyPressイベントでも似たような処理を入れています) 皆様のお知恵を拝借できれば幸いです。 よろしくお願いいたします。 | ||||
|
投稿日時: 2003-03-06 08:29
若輩者ですが、お聞かせ下さいまし。
市販グリットとは、「ウル○ラ」シリーズでしょうか? あの〜DELをさせたくないと言うことは、 編集はさせたいけど、行の削除はされたくないと言う事でしょうか? セル編集時のDELキーによる値の削除ならフォームイベントの問題では 無いと思うのですが・・・。 よろしくお願いします。 | ||||
|
投稿日時: 2003-03-06 14:02
「ウル○ラ」でなく、「Tr○○Grid」です。
実は、フォームのKeyDownイベントでもグリッドのKeyDownイベントでも Deleteキーを殺してみましたが、できなかったのです。 それで、なにか裏技でもあれば。。。。と思い投稿しました。 グリッドとは関係なく、フォーム上でDeleteキーを殺す方法をお教えいただければ 幸いです。 | ||||
|
投稿日時: 2003-03-06 15:43
>「ウル○ラ」でなく、「Tr○○Grid」です。
伏せ字。 ここは商品名載せない方針なのでしょうか? WindowsMessageはすべてWndProcに送られてきます。 WndProcをオーバーライドして
でDeleteキーを無効にできると思います。 | ||||
|
投稿日時: 2003-03-06 15:50
> グリッドとは関係なく、フォーム上でDeleteキーを殺す方法をお教え
> いただければ幸いです。 Control#ProcessDialogKeyメソッドをオーバーライドすれば良いのでは? | ||||
|
投稿日時: 2003-03-06 16:23
>グリッドとは関係なく、フォーム上でDeleteキーを殺す方法・・・
コントロールごとのKeyDownイベント管理なのでFormだけではダメそうですね。 アクティブ対象になるコントロール全部に書くしかないような気がしますが・・・。 Deleteキーを押されて困るコントロールに対して書いてもダメでしょうか? ※対象コントロールにKeyDownイベントが無ければどうしようもありませんが。 先ほど、Windowsアプリで、TextBoxコントロールを張ったところ FormのKeyDownイベントは取得出来ず、TextBoxのKeydownイベントは取得出来ました。 ただ、反映してしまうので、元に戻す処理が要りそうですね。 私のレベルではこの程度しか分かりません。 お邪魔しました。 | ||||
|
投稿日時: 2003-03-06 17:30
皆様の回答、ありがたく拝見させていただきました。
早速試してみます。 ホント、ありがとうございました。 | ||||
|
投稿日時: 2003-03-06 19:00
ご教授頂いたやり方で試してみました。
市販グリッドでオーバーライドしても、これを派生させてオーバーライドさせても Deleteキーは無効にはなりませんでした。。。。 ほかに何かよい方法をご存じの方がいらっしゃったら、 お教え頂けますか? |