从其他形式的VB.NET访问控制

时间:2013-08-06 13:44:30

标签: vb.net winforms

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

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

visual studio没有抛出错误,但实际上Form1中的ListView控件没有任何反应。我试图将Modifiers从Friend更改为public,但没有成功。还有其他我想念的东西吗?

2 个答案:

答案 0 :(得分:1)

您必须访问form1的实例,而不是表单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

答案 1 :(得分:0)

这非常简单,如果您要从对话框窗口引用任何控件,有两种方法可以执行此操作,第一种方法如下:

第一部分

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

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

Dim f as Form1'你不需要使用new,因为你不想使用另一个新版本,你想使用现有版本,所以你只能使用表单名作为参考

3 - 你这样做:

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

f.LightGridControl.Text =“此信息”

第二部分

您可以在主窗口的声明部分中创建私人可变的

私有_mainWin为form1'这是相同的窗口唯一名称

然后你创建一个

Public Property MainForm as Form1    得到        返回_mainWin    结束了    设置(ByRef值为Form1)         _mainForm = value    结束集  如果

结束 在按钮点击事件中

,您可以写下:

Dim f as New Form2

_mainForm =我

f.DialogBox(Me)的

然后在任何情况下,从form2你想从form1(MainWindow)访问控件,你只需这样做:

Dim f as form1

f.MainForm.TextBox1.Text =“我的信息”

这很容易我的朋友!祝你好运,让我知道它是怎么回事。

祝你有个美好的一天!希望这可以帮助别人!!