Form_Load不会在应用程序中执行

时间:2013-01-23 15:42:39

标签: vb.net winforms

我是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()。

感谢。

2 个答案:

答案 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