- 題名: ユーザーコントロールに対するFocus
- 日時: 2004/09/14 17:07:32
- ID: 6170
- この記事の返信元:
- (なし)
- この記事への返信:
- [6178] Re[1]: ユーザーコントロールに対するFocus2004/09/15 1:12:03
- ツリーを表示
おはようございます、アダルティさん。 ユーザコントロールでのイベントがおかしい点はわかりませんが、 ■No6184に返信(アダルティさんの記事) > ⇒ 本来であれば、Validatingイベントを使用したいのですが、一点だけ > 解決できない点があるために、使用しかねています。 > フォームの×ボタンClick時,Alt+F4押下時にValidatingイベントを無視 > できないのです。 > 要は、×ボタン,Alt+F4 を CausesValidation=Falseの扱いにしたいの > です。 > これができればValidationにしたいのですが、解決策はご存知でしょうか? Me.ActiveControl == 自分自身 -> 「×」ボタンを押下した。 (というより、厳密にはFocusを維持しているから検証しなくても良い) 毎回書くのは面倒だから、そういうイベントを自作すれば良いでしょう。 Private Sub ExControl_Validating(ByVal sender As Object, ByVal e As CancelEventArgs) Handles MyBase.Validating If MyClass.FindForm().ActiveControl Is Me = False Then RaiseEvent MyValidate(sender, e) End If End Sub で、MyValidateで検証すればよいのでは? 「e」はCancelEventArgsなので、Cancel可能ですし。
分類:[.NET]
初めて投稿するアダルティと申します。
よろしくお願い致します。
自作のユーザーコントロールに対して、他のコントロールのEnterイベントから
ユーザーコントロールにFocusメソッドを実行すると、1回だけキー入力が
スカってしまう現象があります。
原因が全くつかめないので、ご存知の方、ご回答をお願い致します。
<ユーザーコントロール内のコントロールの構成>
・パネルを1つ配置する
・パネルの子コントロールとして、年,月,日のテキストボックスを配置する
<Focusメソッドの発行>
通常のコントロールと同様、コントロールからフォーカスが離れた瞬間に、
・項目チェック
・エラーがあれば、メッセージ表示&フォーカスを戻す
を行いたいのですが、Leaveイベントだと上手くいかないので
(かつてのLostFocusイベントと同様)、
他コントロールのEnterイベントでチェックを行う方式を採っています。
上記方法でFocusメソッドを発行すると、キー入力がスカってしまうのです。
上記方法ではなく、他コントロールのEnter以外のイベント(例えば、
ボタンのClickイベント等)からFocusメソッドを発行した場合は、何ら
問題はありません。
キー入力がスカる原因として、ユーザーコントロール内の先頭の項目
(年の項目)のEnterイベントが出た後に、なぜかLeaveイベントが出ている事が
原因のようですが、フォーカスを移しただけなのに、どうしてLeaveイベントが
発生してしまうのかが分かりません。
デバッグ実行でブレイクしながら実行すれば上記問題は出ませんが、
かといって、Application.DoEvetnsを発行するようにしても
上手くいかないのです。
ご存知の方、ご回答をよろしくお願い致します。