アプリ版:「スタンプのみでお礼する」機能のリリースについて

vb2010で、作成しています。form1から、form2を呼び出し、okボタンまたは、cancelボタンを押すと、無条件でform2が消えてしまいます。私がしたいのは、form2(パスワード入力ウィンドウ)でテキストボックスにパスワードを入力してokボタンを押して、それが正しい(1234)ときのみform2を消去することです。現在のところ、入力したパスワードが間違っていてもokボタンを押すと、form2は消えてしまいます。
form1側のコードとform2側のコードは以下です。お手数ですが御教示いただけると幸いです。

/////////Form1
Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim f As New Form2()

f.TextBox1.PasswordChar = "*"c '//入力文字をマスクする
If f.ShowDialog(Me) = DialogResult.OK Then
If f.TextBox1.Text = "1234" Then
f.Dispose()
End If
End If

End Sub
End Class

/////////Form2
Public Class Form2
Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click
Dim f As Form1
f = Me.Owner

Me.DialogResult = DialogResult.OK
End Sub


Private Sub btncancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btncancel.Click
Dim f As Form1
f = Me.Owner

Me.DialogResult = DialogResult.Cancel
End Sub

End Class

A 回答 (1件)

Form の DialogResult プロパティに値を設定するとそのフォームが非表示になります。


パスワードがあってるかどうかの判定は Form2 の方で行いましょう。

/////////Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim f As New Form2()

f.TextBox1.PasswordChar = "*"c '//入力文字をマスクする
If f.ShowDialog(Me) = DialogResult.OK Then
// パスワードが一致したときの処理をここに書く
// (「Form2 の結果が OK = パスワードが一致した」ということだから改めてここでパスワードを確認する必要は無い)
End If

End Sub
End Class

/////////Form2
Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click
Dim f As Form1
f = Me.Owner

If Me.TextBox1.Text = "1234" Then
Me.DialogResult = DialogResult.OK
End If

End Sub
    • good
    • 0

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