• ベストアンサー

VB.NET テキストボックスの入力チェック

Visual Basic 2008 に関する質問です。 画面のテキストボックスの入力値をチェックする処理として、 Validatingイベントを使用しています。 例えば、 画面上に配置しているボタンをクリックして画面を閉じさせたい場合(Application.Exit()等)、 テキストボックスの値が未入力であると、上記の入力チェックが先にはしってしまい、 画面を閉じることができません。 閉じるボタンの処理を最優先させる方法について、 どなたかご教授いただけませんでしょうか? (※初歩的なご質問で大変申し訳ございません。)

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

Formにテキストボックス1つボタン1ツ貼り付け。 Public Class Form1 Inherits System.Windows.Forms.Form Private Sub ClickHandler(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged, Button1.Click 'MsgBox(CType(sender, System.Windows.Forms.TextBox).Name & "clich") MsgBox(sender.Name & " が click") If sender.Name = "Button1" Then MsgBox("フォームを閉じる") Me.Close() Exit Sub End If If sender.Name = "TextBox1" Then 'MsgBox("文字チェック") End If End Sub End Class を作る。 これでは見当外れでしょうか。 質問の主旨に沿って居るか自信がないですが イベントTextBox1.TextChangedとButton1.Click を1箇所にまとめています。 http://www.atmarkit.co.jp/fdotnet/vb6tonet/vb6tonet25/vb6tonet25_01.html参考 そしてIf sender.Name = "Button1" Then を先行させています。

masy0312
質問者

補足

ご回答ありがとうございます。非常に参考になりました。 ご教授いただいた内容でテストしてみました。 閉じるボタンをいきなり押した場合の動作に関しては、 私が望むかたちの処理となりました。(入力チェックより閉じる処理の方が優先される) ただし、1点だけ問題がありました。 TextBox1に何も入力せずに次の項目へTabキーでカーソル移動すると、 入力チェックがおこなわれませんでした。 TextChangedイベント以外のイベント処理としてハンドルする必要があるようです。 もう少し調べてみます。

その他の回答 (1)

  • tohru999
  • ベストアンサー率49% (76/154)
回答No.1

閉じるボタンの処理を最優先させる方法ではないのですが... テキストボックスのValidatingイベントの最初に If Me.ActiveControl.Name = "ボタンの名称" Then Exit Sub End If として、入力チェック回避ではどうでしょうか?

masy0312
質問者

お礼

ご回答ありがとうございます。 ご教授いただいた内容でテストした結果、 意図した動作となりました。 非常に参考になりました。 ありがとうございました。

関連するQ&A