- - PR -
vb.netとvb6のイベントについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-04-11 16:24
vb.netとvb6のイベントについて
と書いているんですが、Buttonのイベントで悩んでます。 vb6では、コマンドボタンのGotFocusイベントでエラーチェックを 行い、エラーがある場合テキストボックス等にSetFocusすると コマンドボタンのClickイベントは発生していませんでした。 vb.netでは、このときButtonのClickイベントが発生します。 これはvb6とvb.netの仕様の違いなんでしょうか? 分かる方、いらっしゃらないでしょうか? | ||||
|
投稿日時: 2004-04-11 17:30
VB.NET(.NET Frameworkでは)通常GotFocusイベントの前にEnterイベントが発生します。
従って、Enterイベントで行えば大丈夫です。 但し、テキストボックス等にエラーとなる文字列が書き込まれた時点、若しくはテキストボックス等がフォーカスを失った時点でチェックすることも考えられます。 | ||||
|
投稿日時: 2004-04-11 18:38
すみません、GotFocusイベントの代わりにEnterイベントを
使ってはいるんですがClickイベントが発生しています。 ただし、ActiveControlはテキストボックスに移っているようです。 それで判断すれば問題ないのでしょうか? | ||||
|
投稿日時: 2004-04-11 19:46
ゆうかさんがどのような環境なのか分からないので、なんとも言えませんが、
当方は以下の環境でテストしてみました。 Visual Stuio .NET 2003 .NET Framework 1.1 VB.NET フォームを一つ用意して、そこにボタンコントロールとテキストボックスを配置し、 以下のコードを付け加えました。
テキストボックスになんらかの文字列が代入されている場合はButton1_Clickのイベントが 発生しますが、何も代入せずボタンを押下しようとすると、クリックイベントは発生 せず、テキストボックスにフォーカスが移ります。 | ||||
|
投稿日時: 2004-04-12 10:01
そのボタンというのは、ある処理(以降処理Aと呼ぶ)をすることを指示するためにあるんですよね。
で、処理Aをする前に、テキストボックスに入力された内容の正当性をチェックしなければならないわけですね? それならボタンのClick時の処理の中で、まずチェックをしてから処理Aを行ってください。 フォーカスは関係ありません。 フォーカスをはずすとClickが起こるとか起こらないとかいうのはマイクロソフトが用意したButtonクラスの動作の話ですので、もしこのプログラムを別のバージョンのフレームワーク上で動かすことになった場合に正しく動かなくなったりしませんか。 あるいは処理Aを別のトリガー(ネットワークを介して別マシンからの指示で、タイマーで一定間隔で、等)で引き起こすことになった場合にはフォーカスがどうこうというのは意味がないですよね。 |
1