tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルKeyDownイベントのキャンセル
記事No4742
投稿日: 2006/12/26(Tue) 10:13
投稿者フウセンウナギ
WindowsXP SP2   VB2005

テキストのKeyDownイベントが発生したときに、キーを押さなかったことにするのは
どうすればよいのでしょうか?
VB6では、KeyCode = 0 でできるのですが、同様にe.KeyCode = 0 などとすると
エラーになってしまいます。

動作としては、テキストでエンターキーを押したときに別のプロシージャを呼びます。
その際、フォームのKeyDownイベントでSelectNextControlを使ってフォーカス移動
しているため、自動的にフォーカスが移動してしまいます。
これを防ごうと思います。

[ツリー表示へ]
タイトルRe: KeyDownイベントのキャンセル
記事No4743
投稿日: 2006/12/26(Tue) 12:14
投稿者魔界の仮面弁士
> テキストのKeyDownイベントが発生したときに、キーを押さなかったことにするのは
> どうすればよいのでしょうか?

イベントで処理するなら、e.Handled とか。

[ツリー表示へ]
タイトルRe^2: KeyDownイベントのキャンセル
記事No4744
投稿日: 2006/12/27(Wed) 08:24
投稿者フウセンウナギ
> > テキストのKeyDownイベントが発生したときに、キーを押さなかったことにするのは
> > どうすればよいのでしょうか?
>
> イベントで処理するなら、e.Handled とか。


e.Handled = Trueで、テキストのKeyDownをキャンセルすることはできました。
ただ、これを記述しても先にフォームのKeyDownイベントが起こってしまい、結局フォーカス
移動してしまいます。
フォーム上にはエンターキーでフォーカス移動するものとしないものとが混在しており、
これでは無理のようです。
とりあえず、フォーカス移動の記述はフォームではなくテキストのKeyDownに書いてみること
にします。
どうもありがとうです。

[ツリー表示へ]
タイトルRe^3: KeyDownイベントのキャンセル
記事No4750
投稿日: 2006/12/28(Thu) 22:53
投稿者じゃんぬねっと
> e.Handled = Trueで、テキストのKeyDownをキャンセルすることはできました。
> ただ、これを記述しても先にフォームのKeyDownイベントが起こってしまい、結局フォーカス
> 移動してしまいます。

KeyPreview プロパティが、どのような副作用をもたらすかご存知でしょうか。

> フォーム上にはエンターキーでフォーカス移動するものとしないものとが混在しており、
> これでは無理のようです。
> とりあえず、フォーカス移動の記述はフォームではなくテキストのKeyDownに書いてみること
> にします。

Form 側で一括に制御したくありませんか?
まだ諦めていないのであれば、Process~ 関係のメソッドについて調べてみてください。
Process~ 関係のメソッドをオーバーライドすれば、望みどおりのことが可能でしょう。

[ツリー表示へ]