2017-09-10 11 views
0

プログラミングにはまったく新しいものです。私は一度それが押されたボタンの色を変更するためにこれを思いついた。文字列ChosenRoomを使用してクリックされたボタンのテキストを取得しようとしていますが、一度保存すると文字列の値は何もないため、何か間違っている必要があります。クリックされたボタンのテキストを取得する方法

Private Sub ChangeColor(Sender As Object, e As EventArgs) 
      Dim SenderButton As Button = Sender 
      If YellowButton IsNot Nothing Then 
       YellowButton.BackColor = Me.BackColor 
      End If 
      If SenderButton IsNot YellowButton Then 
       SenderButton.BackColor = Color.Yellow 
       ChosenRoom = SenderButton.Text 
      End If 

      YellowButton = Sender 
     End If 
    End If 

これは私が多分このコードで何かが役立つ文字列

cmd1.Parameters.Add(New OleDbParameter("Room Number", CType(ChosenRoom, String))) 
+0

_ChosenRoom_の値をコード内の空白の文字列にリセットしないでください。このコードは、SenderButtonがYellowButtonでない場合にのみ_ChosenRoom_を設定します。最初のクリックにはいいですが、同じボタンの2回目のクリックは、 – Steve

答えて

0

を保存するために使用していますものです。私はフォーム上にボタンを置いて...

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click, Button3.Click 
     For Each ctr As Control In Controls 
      If TypeOf sender Is Button Then 
       Dim MyButton As Button = CType(sender, Button) 
       If MyButton.Text = "Button2" Then 
        MyButton.BackColor = Color.Red 
        MyButton.Enabled = False 
        Exit For 
       End If 

      End If 
     Next 

    End Sub 

Handles句に注目してください。 イベントに応答していないのに独自のSubを作成している場合は、送信者を引数として渡すことができますが、イベントに応答しているように見える場合は、Handles句を使用する必要があります。 男の子、それはうまくいきませんでした。もう一度やり直してみます

オプションをオンにして、TypeOfで確認したにもかかわらず、送信者がボタンであると仮定していないと思われませんでした。それをMyButtonにCTypeする必要がありました。

+0

の場合は2番目のボタンをクリックしません。今度はCtr + Kで取得しました。このコードは、書式設定だけでは機能しませんでした。ごめんなさい! – Mary

+0

メアリー、あなたのループには限りません。送信者がButton2の場合、ループはすぐに終了し、ループが終了していない場合は、ループしている間はループしません。それがもう一つのアプローチの出発点ですか?また、送信者がボタンであることを確認したら、おそらくCTypeの代わりにDirectCastを使用するべきです。 https://stackoverflow.com/questions/3056514/difference-between-directcast-and-ctype-in​​-vb-net。 「If MyButton.Text = "Button2"」ではなく、「If MyButton is Button2 Then」を使用してボタンを決定することができます。その後、 – Patrick

関連する問題