繁体   English   中英

如何引用VB.net中的现有对象?

[英]How to reference an existing object in VB.net?

您如何引用vb.net中的现有对象?

为了更具体地描述我的问题,我有主窗体Form1在启动应用程序时加载。 Form1具有一个datagridview dgv1 我在项目中还有另一个表单form2 ,其中有一堆文本框。 单击Form1上的按钮后,我将创建一个form2实例。 如何从form2引用现有的form1来填充来自form2dgv1的输入的dgv1?

您需要将对Form1的引用传递给Form2 使用Me关键字获取对当前正在执行的对象的引用:

Form1.vb

Sub Form1_OpenForm2()

    Dim form2 As New Form2()
    form2.AcceptForm1( Me )
    form2.Show()
End Sub

Form2.vb

Private _form1 As Form1

Public Sub AcceptForm1(form1 As Form1)
    _form1 = form1
End Sub

轻松解决:您可以直接Form2访问Form1上的Form1

因此,如果在Form1上具有DataGridView1 ,则在Form2代码中,可以使用Form1.DataGridView1访问。

注意:这不是一个好的设计,因为您将两个表单紧密地结合在一起,所以最好将对DataGridView的引用传递到Form2中,而不是直接对其进行更新。

在Form2的构造函数中,强制其通过您的引用:

Public Class Form2
    Private _dgv As DataGridView
    Public Sub New(dgv As DataGridView)

        ' This call is required by the designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.

        'ensure we have a value object
        If dgv Is Nothing Then Throw New ArgumentNullException("DataGridView")
        _dgv = dgv
    End Sub

    Private Sub frmRibbonTest_Resize(sender As Object, e As EventArgs) Handles Me.Resize
        Dim rect = RibbonControl1.ClientRectangle
        DataGridView1.Location = New Point(rect.X, rect.Y)
        DataGridView1.Height = rect.Height
        DataGridView1.Width = rect.Width
    End Sub
End Class

然后,当您从form1创建form2时,使用如下引用:

 Dim f2 = New Form2(Me.DataGridView1)
 f2.Show()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM