- ベストアンサー
VB(ビジュアルベーシック)で苗字や名前、住所などの情報を入力し、自動的にメッセージフォームを表示する方法
- 学校の課題でVBを使って苗字や名前、住所などの情報を入力し、自動的にメッセージフォームを表示する方法について困っています。
- 課題の要件は、(1)苗字、名前、住所などのテキストボックスを作成すること、(2)4つのラジオボタンを作成すること、(3)全てのテキストボックスとラジオボタンにバリデーションルールを設定すること、(4)全ての情報を入力し終わったらボタンを使わずに自動的にメッセージフォームを表示することです。
- 現在、バリデーションルールでラジオボタンのコードを書いていますが、プログラム起動時にメッセージフォームが表示されてしまい困っています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>バリデーションルール 最初、ひとつずつ、イベントをつけるのかと思いましたが、Validation という語は、どうやらキーワードだということが分かりました。そうしないと、コントロール配列という話に結びきませんね。もうちょっとヒントを書いても良いような気がします。 >全て自動的にメッセージフォームを表示させなきゃいけない それは、TextBox のどれかが、空欄かどうかっていうことでしょう。 当面、TextBox だけに設定します。RadioButton も同じように設定してください。 '------------------------------------------- Private MyTextBoxes As System.Windows.Forms.TextBox() Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.MyTextBoxes = New TextBox(5) {} Me.MyTextBoxes = New System.Windows.Forms.TextBox() _ {Me.TextBox1, Me.TextBox2, Me.TextBox3, Me.TextBox4, Me.TextBox5, Me.TextBox6} Dim i As Integer For i = 0 To 5 'Me.MyTextBoxes(i) = Me.Controls("TextBox" & (i)) AddHandler MyTextBoxes(i).Validating, AddressOf MyTextBoxes_validating Next End Sub Private Sub myTextBoxes_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating Dim cTextBox As TextBox = TryCast(sender, TextBox) Dim n As String If cTextBox.Text = "" Then Select Case cTextBox.Name Case "TextBox1" : n = "Family Name" Case "TextBox2" : n = "First Name" Case "TextBox3" : n = "Address" Case "TextBox4" : n = "Town" Case "TextBox5" : n = "State Name" Case "TextBox6" : n = "ZipCode" Case Else : n = "" End Select MessageBox.Show("Pleae fill in " & n) cTextBox.Select() End If End Sub '------------------------------------------- >If MrRadioButton.Checked = False And MsRadioButton.Checked = False And _ > MrsRadioButton.Checked = False And DrRadioButton.Checked Then > MessageBox.Show("One of the four salutations must be selected ", "Error", _ > MessageBoxButtons.OK, MessageBoxIcon.Exclamation) >プログラム起動と同時にメッセージフォームがあがってくるので困っています Form1_Load に入れれば、当然、そうなるのは言うまでもないでしょうね。 それに、RadioButton は、ひとつしか選ばれないのですから、4つのひとつが選ばれたということは論理的に、ヘンです。ひとつだけで十分のはずです。 こちらと同じように、インスタンスに対して、 MessageBox.Show(cRdioButton.Name &" was selected") というようにすれば良いです。 そのままでは、 "One of the four salutations must be selected " って、意味がよくわかりません。[4つの挨拶]のひとつというのですか?salutation から思いつく単語って、appellation ぐらいではないでしょうか。 なお、ほとんど基礎的なことしか分からないのでしたら、TextBox など、ひとつずつにイベントを設けても良いと思います。
その他の回答 (1)
- ShowMeHow
- ベストアンサー率28% (1424/5027)
>(3)全てのテキストボックス、ラジオボタンにバリデーションルールを使う のあとに、続けてすべてのコントロールの値がセットされていたらどうこうするというのを続けて書けばよいのでは?