我使用Visual Studio并使用以下语言:VB以运行我的代码,我遇到以下错误:
- (8:0)Handles子句需要使用包含类型或其基本类型之一定义的WithEvents变量。
- (9:0)未声明'TextBox1'。由于其保护级别,它可能无法访问。
- (9:0)未声明'TextBox1'。由于其保护级别,它可能无法访问。
- (11:0)Handles子句要求使用包含类型或其基本类型之一定义的WithEvents变量。
- (12:0)未声明'TextBox1'。由于其保护级别,它可能无法访问。
- (12:0)未声明'TextBox1'。由于其保护级别,它可能无法访问。
- (14:0)Handles子句要求使用包含类型或其基本类型之一定义的WithEvents变量。
- (15:0)未声明'TextBox1'。由于其保护级别,它可能无法访问。
- (15:0)未声明'TextBox1'。由于其保护级别,它可能无法访问。
- (17:0)Handles子句要求使用包含类型或其基本类型之一定义的WithEvents变量。
- (18:0)未声明'TextBox1'。由于其保护级别,它可能无法访问。
- (18:0)未声明'TextBox1'。由于其保护级别,它可能无法访问。
- (20:0)Handles子句要求使用包含类型或其基本类型之一定义的WithEvents变量。
- (21:0)未声明'TextBox1'。由于其保护级别,它可能无法访问。
- (21:0)未声明'TextBox1'。由于其保护级别,它可能无法访问。
- (23:0)Handles子句需要使用包含类型或其基本类型之一定义的WithEvents变量。
- (24:0)未声明'TextBox1'。由于其保护级别,它可能无法访问。
- (24:0)未声明'TextBox1'。由于其保护级别,它可能无法访问。
- (26:0)Handles子句要求使用包含类型或其基本类型之一定义的WithEvents变量。
- (27:0)未声明'TextBox1'。由于其保护级别,它可能无法访问。
- (27:0)未声明'TextBox1'。由于其保护级别,它可能无法访问。
- (29:0)Handles子句需要使用包含类型或其基本类型之一定义的WithEvents变量。
- (30:0)未声明'TextBox1'。由于其保护级别,它可能无法访问。
- (30:0)未声明'TextBox1'。由于其保护级别,它可能无法访问。
- (32:0)Handles子句要求使用包含类型或其基本类型之一定义的WithEvents变量。
- (33:0)未声明'TextBox1'。由于其保护级别,它可能无法访问。
- (33:0)未声明'TextBox1'。由于其保护级别,它可能无法访问。
- (35:0)Handles子句需要使用包含类型或其基本类型之一定义的WithEvents变量。
- (36:0)未声明'TextBox1'。由于其保护级别,它可能无法访问。
- (36:0)未声明'TextBox1'。由于其保护级别,它可能无法访问。
- (38:0)Handles子句要求使用包含类型或其基本类型之一定义的WithEvents变量。
- (39:0)未声明'TextBox1'。由于其保护级别,它可能无法访问。
- (39:0)未声明'TextBox1'。由于其保护级别,它可能无法访问。
- (41:0)Handles子句要求使用包含类型或其基本类型之一定义的WithEvents变量。
- (42:0)未声明'Val'。由于其保护级别,它可能无法访问。
- (42:0)未声明'TextBox1'。由于其保护级别,它可能无法访问。
- (43:0)未声明'TextBox1'。由于其保护级别,它可能无法访问。
- (46:0)Handles子句要求使用包含类型或其基本类型之一定义的WithEvents变量。
- (47:0)未声明'Val'。由于其保护级别,它可能无法访问。
- (47:0)未声明'TextBox1'。由于其保护级别,它可能无法访问。
- (48:0)未声明'TextBox1'。由于其保护级别,它可能无法访问。
- (51:0)Handles子句要求使用包含类型或其基本类型之一定义的WithEvents变量。
- (52:0)未声明'Val'。由于其保护级别,它可能无法访问。
- (52:0)未声明'TextBox1'。由于其保护级别,它可能无法访问。
- (53:0)未声明'TextBox1'。由于其保护级别,它可能无法访问。
- (56:0)Handles子句要求使用包含类型或其基本类型之一定义的WithEvents变量。
- (57:0)未声明'Val'。由于其保护级别,它可能无法访问。
- (57:0)未声明'TextBox1'。由于其保护级别,它可能无法访问。
- (58:0)未声明'TextBox1'。由于其保护级别,它可能无法访问。
- (61:0)Handles子句要求使用包含类型或其基本类型之一定义的WithEvents变量。
- (62:0)未声明'Val'。由于其保护级别,它可能无法访问。 -(62:0)未声明'TextBox1'。由于其保护级别,它可能无法访问。
- (75:0)未声明'TextBox1'。由于其保护级别,它可能无法访问。
我试图运行以下代码:
Public Class Form1
Dim firstNumber As Single
Dim secondNumber As Single
Dim answerNumber As Single
Dim arithmeticprocess As String
Private Sub button1_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox1.Text = TextBox1.Text & 1
End Sub
Private Sub button2_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
TextBox1.Text = TextBox1.Text & 2
End Sub
Private Sub button3_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
TextBox1.Text = TextBox1.Text & 3
End Sub
Private Sub button4_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
TextBox1.Text = TextBox1.Text & 4
End Sub
Private Sub button5_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
TextBox1.Text = TextBox1.Text & 5
End Sub
Private Sub button6_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
TextBox1.Text = TextBox1.Text & 6
End Sub
Private Sub button7_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
TextBox1.Text = TextBox1.Text & 7
End Sub
Private Sub button8_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
TextBox1.Text = TextBox1.Text & 8
End Sub
Private Sub button9_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click
TextBox1.Text = TextBox1.Text & 9
End Sub
Private Sub button10_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click
TextBox1.Text = TextBox1.Text & 0
End Sub
Private Sub button11_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button11.Click
TextBox1.Text = TextBox1.Text & " . "
End Sub
Private Sub button12_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button12.Click
firstNumber = Val(TextBox1.Text)
TextBox1.Text = "0"
arithmeticprocess = "+"
End Sub
Private Sub button13_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click
firstNumber = Val(TextBox1.Text)
TextBox1.Text = "0"
arithmeticprocess = "-"
End Sub
Private Sub button14_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button14.Click
firstNumber = Val(TextBox1.Text)
TextBox1.Text = "0"
arithmeticprocess = "*"
End Sub
Private Sub button15_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button15.Click
firstNumber = Val(TextBox1.Text)
TextBox1.Text = "0"
arithmeticprocess = "/"
End Sub
Private Sub button16_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button16.Click
secondNumber = Val(TextBox1.Text)
If arithmeticprocess = "+" Then
answerNumber = firstNumber + secondNumber
End If
If arithmeticprocess = "-" Then
answerNumber = firstNumber + secondNumber
End If
If arithmeticprocess = "*" Then
answerNumber = firstNumber + secondNumber
End If
If arithmeticprocess = "/" Then
answerNumber = firstNumber + secondNumber
End If
TextBox1.Text = answerNumber
End Sub
End Class
答案 0 :(得分:2)
在Visual Basic WinForm中,一个Form对象至少具有2个文件(有时为3个文件)。假设Form是Form1,它具有Form1.vb和Form1.Designer.vb。 Form1.vb是您放置代码的位置。在Form1.Designer.vb中,Visual Studio(或其他IDE)将为对象生成的代码放入表单(按钮,文本框,组合框,网格等)内。必须在Form1.vb(由您编写)或Form1.Designer.vb(由IDE生成)中声明每个对象/变量。 请勿在SomeFormName.Designer.vb中编写任何代码,因为您不应在其中编写任何内容,而是由IDE编写。
如果您具有完整的表单文件,只需从Visual Studio中将其添加。右键单击您的项目,然后单击Add
,然后单击Existing Item
(见图1)。选择表格名称(参见图2),例如。 Form2.vb和表单(包括Designer.vb)将添加到您的项目中。
如果只有代码,则可以尝试手动一个接一个地添加对象。假设我像这样复制您的代码(参见图3)。它显示3个错误,因为IDE找不到名为TextBox1和Button1的对象(请参见红色框中的红线)。有一个按钮在绿色框中显示项目中的所有文件。默认状态下,Form1.Designer.vb文件是隐藏的。单击它后,即可看到Form1.Designer.vb(请参见蓝色框)。
有3条错误消息(2种,其中一种与前一种重复):
'TextBox1' is not declared
很清楚。您需要一个名为TextBox1的文本框。如果发生Handles clause requires a WithEvents variable defined in the containing type or one of its base types.
错误,请参见代码中的Handles一词。它说Handles Button1.Click
。这意味着您需要一个名为Button1的按钮,并且需要为其Click事件创建一个句柄。您需要将Button1的Click事件连接到您的代码。
返回设计师。将按钮和文本框(请参见红色框)从工具箱拖到窗体中。将它们放在您喜欢的任何地方。
单击表单中的按钮,然后查看属性窗口(请参见红色框)。确保按钮的名称为Button1(如代码中所示)。如果不同,请在属性窗口中进行更改。对文本框执行相同的操作。确保文本框的名称为TextBox1。
现在,红线消失了,您可以编译并运行代码。尝试运行代码,然后单击按钮。它将在文本框中添加一个1
字符。遇到错误时,您可以尝试添加其他行并添加更多对象。 此方法不能保证代码将正常运行,因为添加对象时,该对象具有默认属性。原始代码可能会更改对象的属性。
从代码来看,这是一个计算器示例。有16个名为Button1,Button2,Button3,...的按钮,直到Button16。还有一个名为Textbox1的文本框。您可以更改Button的text属性,使其显示正确的文本。 Button1至Button9为1至9,Button10为0,Button11为。,Button12至Button15为+-* /符号,而Button16为=符号。
按下等号按钮时,会有一个小的计算错误。无论算术处理值(符号)如何,原始代码始终会添加firstNumber和secondNumber。应该是这样的:
Private Sub button16_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button16.Click
secondNumber = Val(TextBox1.Text)
If arithmeticprocess = "+" Then
answerNumber = firstNumber + secondNumber
End If
If arithmeticprocess = "-" Then
answerNumber = firstNumber - secondNumber
End If
If arithmeticprocess = "*" Then
answerNumber = firstNumber * secondNumber
End If
If arithmeticprocess = "/" Then
answerNumber = firstNumber / secondNumber
End If
TextBox1.Text = answerNumber
End Sub
由于我注意到代码中有很多冗余,因此我尝试简化它。这是我更改的内容:
代码:
Option Strict On
Public Class Form1
Dim firstNumber As Double, secondNumber As Double, answerNumber As Double
Dim arithmeticProcess As String
Private Sub ButtonNumber_Click(sender As Object, e As EventArgs) Handles ButtonNumber1.Click,
ButtonNumber2.Click, ButtonNumber3.Click, ButtonNumber4.Click, ButtonNumber5.Click,
ButtonNumber6.Click, ButtonNumber7.Click, ButtonNumber8.Click, ButtonNumber9.Click,
ButtonNumber0.Click, ButtonDot.Click
Dim buttonSender = CType(sender, Button)
TextBoxResult.Text += buttonSender.Text
End Sub
Private Sub ButtonOperation_Click(sender As Object, e As EventArgs) Handles ButtonAdd.Click,
ButtonSubtract.Click, ButtonMultiply.Click, ButtonDivide.Click
firstNumber = Val(TextBoxResult.Text)
TextBoxResult.Text = "0"
Dim buttonSender = CType(sender, Button)
arithmeticProcess = buttonSender.Text
End Sub
Private Sub ButtonEqual_Click(sender As Object, e As EventArgs) Handles ButtonEqual.Click
secondNumber = Val(TextBoxResult.Text)
Select Case arithmeticProcess
Case "+"
answerNumber = firstNumber + secondNumber
Case "-"
answerNumber = firstNumber - secondNumber
Case "*"
answerNumber = firstNumber * secondNumber
Case "/"
answerNumber = firstNumber / secondNumber
End Select
TextBoxResult.Text = answerNumber.ToString()
End Sub
End Class
表单: