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

时间:2016-07-21 00:35:20

标签: .net vb.net object reference controls

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

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

2 个答案:

答案 0 :(得分:0)

您需要将引用 - 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

答案 1 :(得分:0)

轻松修复:您可以Form1

直接访问Form2 上的控件

因此,如果您DataGridView1上有Form1,则Form2代码中的Form1.DataGridView1可以使用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

访问它

注意:这不是一个好的设计,因为你紧密耦合了两个表单,最好将DataGridView的引用传递给Form2而不是直接更新它

在Form2的构造函数中

强制它传递您的引用:

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

然后当您从form1创建form2时,请使用您的引用:

{{1}}