3

我正在 VS 2012 中开发一个具有多种形式的 vb.net 项目。可以说,我有一个带有 ListView 的 Form1,我从 Form1 调用了一个 From2。我将此代码添加到 Form2 的 Load 事件中:

Form1.ListViewTest.Items.Add("test")

Visual Studio 没有抛出任何错误,但实际上 Form1 中的 ListView 控件中没有任何反应。我试图将修饰符从 Friend 更改为 public,但没有成功。还有什么我想念的吗?

4

2 回答 2

1

您必须访问 form1 的实例,而不是 form 1 对象本身。逐步浏览所有打开的表格,并获得您想要的表格。我个人使用表单的 .Tag 对象,并在其中添加一个字符串来识别它。

    For Each f As Form In My.Application.OpenForms

        If Not f.InvokeRequired Then
            ' Can access the form directly.
            'Get main form , use main form
            If f.Tag = "main" Then
                Dim fcast As New form_form1 '<< whatever your form name
                fcast = f
                Dim xitem As New ListViewItem
                xitem.Text = "blah"
                xitem.SubItems.Add("sub blah")

                fcast.listview1.Items.Add(xitem) '<< use listview name
            End If

        End If

    Next
于 2013-08-06T14:21:31.783 回答
0

这真的很简单,如果你要从对话框窗口中引用任何控件,有两种方法可以做到这一点,第一种如下:

第一部分

1 - 您确保要访问修饰符的控件设置为 Public

2 - 然后在对话窗口中,执行以下操作:

dim f as Form1 ' 不需要用new,因为不想用另一个新的fresh版本,想用已有的,所以只用表单名作为参考

3 - 你这样做:

f = Ctype(Me.Owner, Form1) ' 不需要循环遍历表单集合,因为每个表单名称都是唯一的

f.LightGridControl.Text = "此信息"

第二部分

您可以在主窗口的声明部分创建一个私有变量

Private _mainWin as form1 ' 这是相同的窗口唯一名称

然后你创建一个

公共属性 MainForm as Form1 Get Return _mainWin End Get Set (ByRef value as Form1) _mainForm = value End Set End if

在按钮单击事件中,您可以这样写:

将 f 变暗为新 Form2

_mainForm = 我

f.对话框(我)

然后,在任何情况下,您想从 form1(MainWindow)访问控件,您只需执行以下操作:

将 f 变暗为 form1

f.MainForm.TextBox1.Text = "我的信息"

朋友就是这么简单!!祝你好运,让我知道进展如何。

祝你今天过得愉快!!希望这可以帮助某人!

于 2013-11-26T10:49:25.853 回答