- PR -

deleteキーを殺す方法

投稿者投稿内容
ペキンダック
会議室デビュー日: 2003/03/02
投稿数: 6
投稿日時: 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/03
投稿数: 10
投稿日時: 2003-03-06 08:29
若輩者ですが、お聞かせ下さいまし。

市販グリットとは、「ウル○ラ」シリーズでしょうか?
あの〜DELをさせたくないと言うことは、
編集はさせたいけど、行の削除はされたくないと言う事でしょうか?
セル編集時のDELキーによる値の削除ならフォームイベントの問題では
無いと思うのですが・・・。

よろしくお願いします。
ペキンダック
会議室デビュー日: 2003/03/02
投稿数: 6
投稿日時: 2003-03-06 14:02
「ウル○ラ」でなく、「Tr○○Grid」です。
実は、フォームのKeyDownイベントでもグリッドのKeyDownイベントでも
Deleteキーを殺してみましたが、できなかったのです。
それで、なにか裏技でもあれば。。。。と思い投稿しました。

グリッドとは関係なく、フォーム上でDeleteキーを殺す方法をお教えいただければ
幸いです。
Tog
ベテラン
会議室デビュー日: 2002/06/09
投稿数: 76
投稿日時: 2003-03-06 15:43
>「ウル○ラ」でなく、「Tr○○Grid」です。

伏せ字。
ここは商品名載せない方針なのでしょうか?

WindowsMessageはすべてWndProcに送られてきます。

WndProcをオーバーライドして
コード:
If m.Msg = &H100  then
  Return
End If
MyBase.WndProc(m)


でDeleteキーを無効にできると思います。
二天
ベテラン
会議室デビュー日: 2001/09/26
投稿数: 60
投稿日時: 2003-03-06 15:50
> グリッドとは関係なく、フォーム上でDeleteキーを殺す方法をお教え
> いただければ幸いです。

Control#ProcessDialogKeyメソッドをオーバーライドすれば良いのでは?
なごやん
会議室デビュー日: 2003/03/03
投稿数: 10
投稿日時: 2003-03-06 16:23
>グリッドとは関係なく、フォーム上でDeleteキーを殺す方法・・・

コントロールごとのKeyDownイベント管理なのでFormだけではダメそうですね。
アクティブ対象になるコントロール全部に書くしかないような気がしますが・・・。

Deleteキーを押されて困るコントロールに対して書いてもダメでしょうか?
※対象コントロールにKeyDownイベントが無ければどうしようもありませんが。

先ほど、Windowsアプリで、TextBoxコントロールを張ったところ
FormのKeyDownイベントは取得出来ず、TextBoxのKeydownイベントは取得出来ました。
ただ、反映してしまうので、元に戻す処理が要りそうですね。

私のレベルではこの程度しか分かりません。
お邪魔しました。
ペキンダック
会議室デビュー日: 2003/03/02
投稿数: 6
投稿日時: 2003-03-06 17:30
皆様の回答、ありがたく拝見させていただきました。
早速試してみます。

ホント、ありがとうございました。
ペキンダック
会議室デビュー日: 2003/03/02
投稿数: 6
投稿日時: 2003-03-06 19:00
ご教授頂いたやり方で試してみました。
市販グリッドでオーバーライドしても、これを派生させてオーバーライドさせても
Deleteキーは無効にはなりませんでした。。。。

ほかに何かよい方法をご存じの方がいらっしゃったら、
お教え頂けますか?

スキルアップ/キャリアアップ(JOB@IT)