WindowsXP SP2 VB2005テキストのKeyDownイベントが発生したときに、キーを押さなかったことにするのはどうすればよいのでしょうか?VB6では、KeyCode = 0 でできるのですが、同様にe.KeyCode = 0 などとするとエラーになってしまいます。動作としては、テキストでエンターキーを押したときに別のプロシージャを呼びます。その際、フォームのKeyDownイベントでSelectNextControlを使ってフォーカス移動しているため、自動的にフォーカスが移動してしまいます。これを防ごうと思います。
> テキストのKeyDownイベントが発生したときに、キーを押さなかったことにするのは> どうすればよいのでしょうか?イベントで処理するなら、e.Handled とか。
> > テキストのKeyDownイベントが発生したときに、キーを押さなかったことにするのは> > どうすればよいのでしょうか?> > イベントで処理するなら、e.Handled とか。e.Handled = Trueで、テキストのKeyDownをキャンセルすることはできました。ただ、これを記述しても先にフォームのKeyDownイベントが起こってしまい、結局フォーカス移動してしまいます。フォーム上にはエンターキーでフォーカス移動するものとしないものとが混在しており、これでは無理のようです。とりあえず、フォーカス移動の記述はフォームではなくテキストのKeyDownに書いてみることにします。どうもありがとうです。
> e.Handled = Trueで、テキストのKeyDownをキャンセルすることはできました。> ただ、これを記述しても先にフォームのKeyDownイベントが起こってしまい、結局フォーカス> 移動してしまいます。KeyPreview プロパティが、どのような副作用をもたらすかご存知でしょうか。> フォーム上にはエンターキーでフォーカス移動するものとしないものとが混在しており、> これでは無理のようです。> とりあえず、フォーカス移動の記述はフォームではなくテキストのKeyDownに書いてみること> にします。Form 側で一括に制御したくありませんか?まだ諦めていないのであれば、Process~ 関係のメソッドについて調べてみてください。Process~ 関係のメソッドをオーバーライドすれば、望みどおりのことが可能でしょう。