如何使用其他模块中的表单对象执行操作?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用其他模块中的表单对象执行操作?相关的知识,希望对你有一定的参考价值。

首先,为什么是表格类?

但现在谈到主要问题。

我有:

Form1.vb

Module1.vb

在表单上有一个文本框,进度条,标签等。

我希望能够从module1更改我的表单上的这些对象的属性,但我似乎无法访问它们。

表格上的这些东西都是对象,对吧?那么他们有一定的范围吗?我该怎么改变它?

等等,但根据我的解决方案资源管理器,这些东西是一个类的属性?

enter image description here

但是当我运行程序时,表单出现了?是否必须实例化表单类以便创建form1对象?

这并不重要,但这是一个来自module1的片段

Sub WriteObjectsToCSV()
    Dim props As PropertyInfo() = MyCompanies(1).GetType().GetProperties()
    Dim sw As StreamWriter = 
    My.Computer.FileSystem.OpenTextFileWriter(SaveAs, False)
    Dim csv As New CsvHelper.CsvWriter(sw)

    csv.WriteHeader(Of Company)()
    csv.NextRecord()

    For Each company In MyCompanies

        '>>> want to write to my text box and change my progress bar here <<<

        For Each prop In props
            csv.WriteField(prop.GetValue(company))
        Next
        csv.NextRecord()
    Next
End Sub
答案

表单是类,因为它们是动态创建的。您可以多次实例化并打开相同的表单类,并同时打开实例。

VB自动实例化主窗体。

您可以通过My.Application.OpenForms访问打开的表单。主要形式始终是第一个

Dim mainForm As Form1

mainForm = DirectCast(My.Application.OpenForms(0), Form1)
mainForm.txtOutput.Text = "hello"

为了能够从外部访问表单的控件,必须将它们声明为PublicInternal。您可以从属性窗口(Modifiers属性)更改访问修饰符。

相反,您也可以在表单中声明一个属性,以使文本可以在外部访问

Public Property OutputText() As String
    Get
        Return txtOutput.Text
    End Get
    Set(ByVal value As String)
        txtOutput.Text = value
    End Set
End Property

现在您可以在模块中编写它

mainForm.OutputText = "hello"

以上是关于如何使用其他模块中的表单对象执行操作?的主要内容,如果未能解决你的问题,请参考以下文章

python 使用requests模块, 如何模拟进行登录并执行之后的操作?

如何使用导航架构组件修复动态功能模块中片段的发布版本中的ClassNotFoundException?

用 php 中的文件和其他输入处理发布的 formData 对象

当 ViewPager 中的片段出现和消失时如何执行一些代码

如何使用 ajax 发送对象数组以及其他表单数据?

Django 表单字段验证 - 如何判断操作是插入还是更新?