2012-07-26 23 views
0

我有兩個問題訪問變量到另一個子程序-VB

  1. 我想在我的Button15_ click

  2. 當我在該行op = sender.Text打字,我不力鋸使用result intellisense中發件人對象的方法?

這裏是我的代碼

Public Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click, Button11.Click, Button12.Click, Button13.Click, Button14.Click, Button14.Click, Button16.Click 
    Dim op As Char 
    op = sender.Text 

    result = Convert.ToInt32(TextBox1.Text) 

End Sub 

Public Sub Button15_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button15.Click 
    Select Case op 
     Case "+" 
      result += Convert.ToInt32(TextBox1.Text) 
      TextBox1.Text = result 
     Case "-" 
      result -= Convert.ToInt32(TextBox1.Text) 
      TextBox1.Text = result 
     Case "*" 
      result *= Convert.ToInt32(TextBox1.Text) 
      TextBox1.Text = result 
     Case "\" 
      result \= Convert.ToInt32(TextBox1.Text) 
      TextBox1.Text = result 


    End Select 




End Sub 
+0

'op'需要在以類級別聲明爲它的多種功能使用。 – 2012-07-26 15:48:29

回答

1

聲明op作爲類級別:

Dim op As Char 

Public Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click, Button11.Click, Button12.Click, Button13.Click, Button14.Click, Button14.Click, Button16.Click 
    op = sender.Text 

    result = Convert.ToInt32(TextBox1.Text) 
End Sub 

Public Sub Button15_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button15.Click 
    Select Case op 
     Case "+" 
      result += Convert.ToInt32(TextBox1.Text) 
      TextBox1.Text = result 
     Case "-" 
      result -= Convert.ToInt32(TextBox1.Text) 
      TextBox1.Text = result 
     Case "*" 
      result *= Convert.ToInt32(TextBox1.Text) 
      TextBox1.Text = result 
     Case "\" 
      result \= Convert.ToInt32(TextBox1.Text) 
      TextBox1.Text = result 
    End Select 
End Sub 

你沒有看到在智能感知Text的原因是senderObject,不一個TextBox,並沒有Text屬性。我建議你打開Option Strict,因爲它會顯示幾個潛在的代碼錯誤。爲了得到它,投sender

op = DirectCast(sender, Button).Text(0) 

還有在Button15_Click很多共同的邏輯。我把它改寫爲:

Dim rightOperand As Integer = Integer.Parse(TextBox1.Text) 

Select Case op 
    Case "+"c 
     result += rightOperand 
    Case "-"c 
     result -= rightOperand 
    Case "*"c 
     result *= rightOperand 
    Case "\"c 
     result \= rightOperand 
End Select 

TextBox1.Text = result.ToString() 
0
Private op as Char 

Public Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click, Button11.Click, Button12.Click, Button13.Click, Button14.Click, Button14.Click, Button16.Click 
    op = DirectCast(sender, button).Text 
    result = Convert.ToInt32(TextBox1.Text) 
End Sub