2013-11-15 4 views
0

이것은 다소 단순하고 정말 어리 석다. 그러나 나는 내가 놓친 거지 무엇을 볼 수 없습니다 ..이 코드버튼 텍스트 변경 vb.net

Private Sub btnmode_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnmode.Click 
    If Me.btnmode.Text = "COMMAND MODE" Then 
     Me.btnmode.Text = "DATA MODE" 
     sPort.Write("$$$") 
    End If 
    If Me.btnmode.Text = "DATA MODE" Then 
     Me.btnmode.Text = "COMMAND MODE" 
     sPort.Write("$$$" & vbCr) 
     sPort.Write("exit" & vbCr) 
    End If 

End Sub 

enter image description here

, 내가 클릭 한 후 해당 텍스트를 변경 할 수 있어야한다. 그러나 왜 그렇지 않은가? 아무것도 일어나지 않고있다.

답변

0
If Me.btnLoad.Text = "COMMAND MODE" Then 
    Me.btnLoad.Text = "DATA MODE" 
    sPort.Write("$$$") 
ElseIf Me.btnLoad.Text = "DATA MODE" Then 
    Me.btnLoad.Text = "COMMAND MODE" 
    sPort.Write("$$$" & vbCr) 
    sPort.Write("exit" & vbCr) 
End If 
+0

훌륭함. 하하하! 감사. 왜 두명의 If를 읽지 않는거야? lol – AdorableVB

+0

버튼 하나에 미리 정의 된 텍스트가있는 경우 몇 가지 작업을 수행하고 해당 루프의 연결을 끊는 직선 fowrard입니다. 그러나 텍스트가 있으면 텍스트를 찾아 변경하고 다음 단계를 실행하려고 시도합니다. – coder

1

이 경우 select case을 사용하면 더 읽기 쉽습니다.

select case ucase(Me.btnmode.Text) 

case "COMMAND MODE" 
    Me.btnmode.Text = "DATA MODE" 
    sPort.Write("$$$") 
case "DATA MODE" 
    Me.btnmode.Text = "COMMAND MODE" 
    sPort.Write("$$$" & vbCr) 
    sPort.Write("exit" & vbCr) 

End Select 

문제 코드에서 발견

If Me.btnmode.Text = "COMMAND MODE" Then 
     Me.btnmode.Text = "DATA MODE" '--------> Text been set as DATA MODE 
     sPort.Write("$$$")   ' | 
    End If       ' | 
             ' | 
    If Me.btnmode.Text = "DATA MODE" Then ' ---------> Here again          
     Me.btnmode.Text = "COMMAND MODE" ' you are checking the Text with 
     sPort.Write("$$$" & vbCr)   ' DATA MODE and you are assigning 
     sPort.Write("exit" & vbCr)  ' the text back to COMMAND MODE 
    End If 

그래서 내가 처음에 생각하여 버튼의 텍스트가 "명령 모드"로 설정되어 있습니다. 결과적으로 버튼의 텍스트가 되돌리기를 거부하고 있습니다.

+0

오, 그게 왜 단 하나의 조건이 효과가 있었는지. 어리석은 실수. 설명 주셔서 감사합니다! – AdorableVB