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