vb.net中表单的自定义构造函数:最佳实践

时间:2010-11-01 14:54:10

标签: vb.net winforms visual-studio-2008

我对vb.net很新,而且windows形成了整体的开发,所以这可能都是非常基本的,但是这里也是。

我想从其他表单中打开一个新表单,并将一些选定对象从该表单上的控件传递给新表单。我认为,这样做的明智方法是作为表单构造函数的参数。现在我知道visual studio GUI为我的表单创建了部分类,它包含了我可以在设计器中拖动到那里的属性。我假设它也拥有默认构造函数。因为它可能会做各种初始化表单所需的东西,我想我应该从我的自定义构造函数ala中调用它

public sub new(byval my_parameter as Foo)
  Me.new()
  Me.my_parameter = my_parameter
  do_some_initialisation()
end sub

显然不是这样,因为它无法找到默认构造函数。问题是,visual studio不遗余力地阻止我看到生成的构造函数,所以我知道如何访问它。这让我相信我实际上做错了,应该开始走上一条不同的道路,因为你被迫进入的道路通常是明智的做法,我通常会发现这太晚了。

那我该怎么做呢?

3 个答案:

答案 0 :(得分:17)

这是一个相当简单的例子。 这将进入您的“主要”表单(您要从中调用新表单):

Dim childForm1 As New form2Name(item)
childForm1.Text = "Title of your new form"
Call childForm1.Show()

form2Name(item)分解为“form2Name”是您要打开的表单的名称,“item”是要传递的参数。

在新表单(form2Name)中添加以下代码:

Public Sub New(ByVal item As String)
    InitializeComponent() ' This call is required by the Windows Form Designer.
    MsgBox(item)
End Sub

您可以在表单中执行任何其他操作。 希望这会有所帮助。

答案 1 :(得分:3)

对于VB.Net,我认为你所追求的是

MyBase.New()

答案 2 :(得分:2)

派生的表单类自动继承System.Windows.Forms.Form的默认构造函数。在派生的构造函数代码执行之前,将自动调用此默认构造函数。您找不到默认构造函数的任何代码的原因是因为派生类没有专门化默认构造函数。如果您希望定义自己的默认构造函数,可以。您还可以定义不带参数的构造函数。

如果删除此行,您的代码应该可以正常工作:

Me.New()