dポイントプレゼントキャンペーン実施中!

Visual Basic 2008 に関する質問です。

画面のテキストボックスの入力値をチェックする処理として、
Validatingイベントを使用しています。

例えば、
画面上に配置しているボタンをクリックして画面を閉じさせたい場合(Application.Exit()等)、
テキストボックスの値が未入力であると、上記の入力チェックが先にはしってしまい、
画面を閉じることができません。

閉じるボタンの処理を最優先させる方法について、
どなたかご教授いただけませんでしょうか?

(※初歩的なご質問で大変申し訳ございません。)

A 回答 (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/vb6to …参考
そしてIf sender.Name = "Button1" Then
を先行させています。

この回答への補足

ご回答ありがとうございます。非常に参考になりました。

ご教授いただいた内容でテストしてみました。

閉じるボタンをいきなり押した場合の動作に関しては、
私が望むかたちの処理となりました。(入力チェックより閉じる処理の方が優先される)

ただし、1点だけ問題がありました。
TextBox1に何も入力せずに次の項目へTabキーでカーソル移動すると、
入力チェックがおこなわれませんでした。

TextChangedイベント以外のイベント処理としてハンドルする必要があるようです。
もう少し調べてみます。

補足日時:2011/01/01 21:22
    • good
    • 0

閉じるボタンの処理を最優先させる方法ではないのですが...



テキストボックスのValidatingイベントの最初に

If Me.ActiveControl.Name = "ボタンの名称" Then
Exit Sub
End If

として、入力チェック回避ではどうでしょうか?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

ご教授いただいた内容でテストした結果、
意図した動作となりました。

非常に参考になりました。
ありがとうございました。

お礼日時:2011/01/01 21:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A