Cannot change text of button on a control.
-
Still doesn't work.
I have no idea what you're doing wrong because this works fine. I wiped up this little example in about a minute:
Private Sub TestButton\_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles TestButton.MouseDown ChangeButtonText(TestButton) End Sub Private Sub TestButton\_MouseUp(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles TestButton.MouseUp ChangeButtonText(TestButton) End Sub Private Sub ChangeButtonText(ByRef target As Button) If target.Text = "0" Then target.Text = "1" Else target.Text = "0" End If End Sub
If you want the button to change text like a toggle, just remove the MouseUp handler. Truthfully, I'd be creating my own button control to wrap this functionality and overriding the OnMouseDown and OnMouseUp methods to do this. I wouldn't be doing it using event handlers. But, since this method is easier to understand, here you go...
A guide to posting questions on CodeProject[^]
Dave Kreskowiak -
I have no idea what you're doing wrong because this works fine. I wiped up this little example in about a minute:
Private Sub TestButton\_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles TestButton.MouseDown ChangeButtonText(TestButton) End Sub Private Sub TestButton\_MouseUp(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles TestButton.MouseUp ChangeButtonText(TestButton) End Sub Private Sub ChangeButtonText(ByRef target As Button) If target.Text = "0" Then target.Text = "1" Else target.Text = "0" End If End Sub
If you want the button to change text like a toggle, just remove the MouseUp handler. Truthfully, I'd be creating my own button control to wrap this functionality and overriding the OnMouseDown and OnMouseUp methods to do this. I wouldn't be doing it using event handlers. But, since this method is easier to understand, here you go...
A guide to posting questions on CodeProject[^]
Dave KreskowiakThat worked beautifully :D BIG THANKS M8!
-
I made a control which has a button on it. But I need to change the text of it when it is clicked. this is what I have tried but it didn't work:
If Button1.Text = "1" then
Button1.Text = "0"
Elseif Button1.Text = "0" then
Button1.Text = "1"
End ifOke i know this sounds a bit basic but have you checked for spaces? strings are quite picky with those. "0 " is not the same as "0" for them. tough its likely a human will read over that last space. you could add a replace to the .text to get rid of this problem.
If Button1.Text.Replace(" ","") = "1" then
Button1.Text = "0"
Elseif Button1.Text.Replace(" ","") = "0" then
Button1.Text = "1"
End ifEDIT: oke reading some more and i hear some rumors that your using several threads. if this thing is executed in a thread you might want to enforce the update to your gui.
Private Sub updateUI() If Me.InvokeRequired Then Me.Invoke(New MethodInvoker(AddressOf updateUI)) Else Me.Update() End If End Sub
if your using that button thing in a sub/background thread then add the above sub and try calling it after the button event is done. be aware that this isn't good code and will enforce a full refresh of your screen, its a nice way to test tough.
-
Oke i know this sounds a bit basic but have you checked for spaces? strings are quite picky with those. "0 " is not the same as "0" for them. tough its likely a human will read over that last space. you could add a replace to the .text to get rid of this problem.
If Button1.Text.Replace(" ","") = "1" then
Button1.Text = "0"
Elseif Button1.Text.Replace(" ","") = "0" then
Button1.Text = "1"
End ifEDIT: oke reading some more and i hear some rumors that your using several threads. if this thing is executed in a thread you might want to enforce the update to your gui.
Private Sub updateUI() If Me.InvokeRequired Then Me.Invoke(New MethodInvoker(AddressOf updateUI)) Else Me.Update() End If End Sub
if your using that button thing in a sub/background thread then add the above sub and try calling it after the button event is done. be aware that this isn't good code and will enforce a full refresh of your screen, its a nice way to test tough.
Thanks Nick. But the issue has already been resolved :)