2012-07-26 48 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