- - PR -
【vb.net】 GroupBoxのValidatingイベント
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-08-24 13:03
いつも大変お世話になっております。
フォーカス遷移について悩んでいることがありまして書き込みさせて頂きます。 現在、VB.NET(環境はVS.NET2002)によるWindowsアプリケーションの開発をしています。 しかし下記のような場合にうまく動作してくれないところがあります。 GroupBox内にTextBox1,2,3の3つが貼られていて、GroupBox外にTextBox4が1つ貼られています。 GroupBox内のTextBoxからTextBox4にフォーカスを移動するとき、 GroupBox内のTextBoxが空であるときはそのTextBoxにフォーカスを返す。 これをGroupBoxのValidatingイベントで書いていますが、 これだと、一度TextBox4にフォーカスが移ってから、 再度GroupBox内のTextBoxにフォーカスが戻るといった動作になってしまっています。 TextBox4(というより、GroupBox外のコントロール)にフォーカスが移らないように制御することは出来ないのでしょうか? お知恵を拝借願います。 宜しくお願い致します。 以下にコーディングを記載いたします。 Private Sub GroupBox1_Validating(ByVal sender As Object, ByVal _ e As System.ComponentModel.CancelEventArgs) Handles GroupBox1.Validating If Me.TextBox1.Text = "" Then e.Cancel = True Me.TextBox1.Focus() End If End Sub | ||||
|
投稿日時: 2005-08-24 13:39
Validating イベントである以上はフォーカスは移ってしまいます。
これは防ぎようがないです。 ProcessCmdKey で Tab キーを補足などして、 キーによる遷移は防げますが、マウスでの遷移を防ぐのは面倒です。 仕様からして、少しムリが出てきています。 GroupBox 以外のコントロールを非活性にするなどして解決すべきだと思います。
これ、Me.TextBox1.Focus() 要らないです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2005-08-25 10:46
じゃんぬねっと様、回答ありがとうございます。
いろいろ試してみましたが、やはり無理っぽいため GroupBoxのValidatingを使うのはやめることにします。 ありがとうございました。 | ||||
|
投稿日時: 2006-03-19 12:37
確かにValidatingメソッドは無理ですが、
GroupBoxで、それぞれのTextBoxイベントをWithEventsで登録し、TextBoxのLostFocusイベントをハンドリングすれば、「GroupBox内のTextBoxからTextBox4にフォーカスを移動するとき、 GroupBox内のTextBoxが空であるときはそのTextBoxにフォーカスを返す。」ということが可能です。 | ||||
|
投稿日時: 2006-03-19 12:39
LostFocus イベントだとまずいので、Leave イベントを使った方が良いですね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
1