Groupbox1に、3個のボタンを作成して、どれか押されたら
その押された内容で処理しようとしてますが
うまくGroupBOx1.textに値が入ってきません
イベントはどのようにすればいいのでしょうか?
そもそもGroupBox1.textには値はセットされません。
アクアと申します。
微力ながらお手伝い申し上げます。
GroupBoxコントロールの中にある3つButtonコントロールが押され、そのButtonコントロールに応じた分岐処理をしたいという内容でお答えします。
Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Button1.Click, Button2.Click, Button3.Click
For Each ctr As Control In Me.GroupBox1.Controls
If TypeOf (ctr) Is System.Windows.Forms.Button Then
Select Case DirectCast(sender, Button).Name
Case Button1.Name
MessageBox.Show(Button1.Text + "が押されました。")
Case Button2.Name
MessageBox.Show(Button2.Text + "が押されました。")
Case Button3.Name
MessageBox.Show(Button3.Text + "が押されました。")
End Select
End If
Next
End Sub
上記の方法はいかがでしょうか?
For文とIf文は記述しないでも動きます。
むしろSelect文だけでの方がこのコードの動きが判りやすいかもしれません。
ポイントはHandles句に3つのButtonコントロールのClickイベントがあるところです。
これで、どのButtonコントロールが押されようとイベントが発生します。
senderにはイベントが発生したオブジェクトが代入されているので、そのオブジェクトの名前に応じた分岐処理をSelect文で行っています。
ご質問の内容の中で、GroupBox1.Textに値が入っていかないとありますが、やじゅさんのご指摘のように値はセットされないため、上記の様な動作についての質問と解釈しました。
違っていたらお知らせ願います。
アクア様親切にご回答ありがとうございます。
ボタンを押して、GroupBox1の選択内容を取得するのではなく
GroupBox1内のボタンが押されたときに取得したいと思いました。
で下記のように、ボタンを押された時に、GroupBox1に値を設定するように
して解決致しました。ありがとうございました。
Private Sub GroupA_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GroupA.TextChanged
Me.名前.Text = Group時間A.Text
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.GroupA.Text = Me.Button1.Text
End Sub
ツイート | ![]() |