【问题标题】:How do I do stuff with my form objects from another module?如何处理来自另一个模块的表单对象?
【发布时间】:2017-12-30 19:04:28
【问题描述】:

首先,为什么是表单类?

但现在是主要问题。

我有:

Form1.vb

Module1.vb

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

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

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

等等,但根据我的解决方案浏览器,这些东西是类的属性??

但是当我运行程序时表单会出现??是不是必须实例化表单类才能创建 form1 对象?

没关系,但这里有一个来自 module1 的 sn-p

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

【问题讨论】:

  • 表单是类,因为它是 21 世纪,它是一个面向对象的世界。并非图片中的所有内容都是对象 - 有些是方法。不清楚MyCompanies(1) 是什么,但您可以将其传递给模块方法。根据MyCompanies(1) 是什么,该代码看起来是一个自制的序列化程序。您可能想查看许多可用的序列化方法。
  • 表单实例化 - VB App 框架为您完成。哪种形式取决于您在项目属性中设置为 Startup Object 的内容。您也可以通过Sub Main 中的代码作为Application.Run(New Form1) 执行此操作。如果MyCompanies 是数据 - 而不是将其传递给该方法,您还可以将方法移动到数据所在的位置(表单)。现有的序列化程序值得研究。将来尝试在每个帖子中问一个问题 - 这是要求教程的边界

标签: vb.net forms class scope


【解决方案1】:

表单是类,因为它们是动态创建的。您可以多次实例化和打开同一个表单类,同时让实例保持打开状态。

VB 自动实例化主窗体。

您可以通过My.Application.OpenForms 访问打开的表单。主窗体总是第一个

Dim mainForm As Form1

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

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

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

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"

【讨论】:

    猜你喜欢
    • 2014-03-28
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多