我是Visual Basic的新手。我已经安装了Microsoft Visual Studio 2010.创建了一个新的Windows窗体应用程序。举个例子,我制作了一个简单的程序,要求最终用户输入2个数字,然后允许他们添加或减去第一个数字,并在文本框中显示输出。
现在,我添加了另一个子例程,它将在Windows窗体加载时自动执行。这将计算输出文本框的宽度和表格宽度,并显示在底部。
这就是代码现在的样子:
Public Class Form1
' Run this Subroutine initially to display the Form and Text box width
Private Sub Form_Load()
Label5.Text = TextBox3.Width
Label7.Text = Me.Width
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a As Integer
Dim b As Integer
a = TextBox1.Text
b = TextBox2.Text
TextBox3.Text = a + b
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim a As Integer
Dim b As Integer
a = TextBox1.Text
b = TextBox2.Text
TextBox3.Text = a - b
End Sub
End Class
虽然所有内容都适用于加法和减法,但它不会在Windows窗体中显示窗体和输出文本框宽度。
我认为,Form_Load()没有正确执行。
我也尝试过,Form_Activate()但是也没用。
一旦我能够这样做,我想扩展这个概念来调整输出文本框的大小以及Form resize。但是,出于理解的目的,我想看看我是否可以成功执行Form_Load()。
感谢。
答案 0 :(得分:2)
Form_Load
未执行。现在,它只是任何其他方法。为了告诉VB使这个方法处理Load
事件,你需要告诉它:
Private Sub Form_Load(sender As Object, e As EventArgs) Handles MyBase.Loasd
Label5.Text = TextBox3.Width
Label7.Text = Me.Width
End Sub
(并为事件添加所需的参数。)
其他一些评论:
确保您的项目选项始终启用Option Strict On
。这将使编译器对代码更严格,并标记更多错误。 这是一件好事,因为这些错误是潜在的错误。特别是,您的代码在不同数据类型之间的转换时非常宽松,这些应该是明确的。
声明它们时初始化变量,不要在单独的语句中赋值。也就是说,写下这个:
Dim a As Integer = Integer.Parse(TextBox1.Text)
(也添加了显式转换。)
如果要填充表单的控件,可以在表单编辑器中正确设置其Dock
属性,而不必手动编程。
答案 1 :(得分:2)
您需要添加句柄,以便应用自动执行:
Private Sub Form_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
'...
End Sub