【问题标题】:How to pass data from one form to multiple forms VB.net如何将数据从一个表单传递到多个表单 VB.net
【发布时间】:2017-01-02 07:05:27
【问题描述】:

我的 Form1 看起来像这样获取文本框的值以将数据传递给多个表单。:

Public Class Form1

Public username As String

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    username = TextBox1.Text
    Form2.Show()
    Me.Close()
End Sub
End Class

在第二个表单中,我使用此代码显示从 Form1 输入的用户名数据。:

Public Class Form2

Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Label1.Text = "Hi " & Form1.username & "!"
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Form3.Show()
    Me.Close()
End Sub
End Class

效果很好。数据以第二种形式出现。但在Form3中,它只显示“Form1”

Form3代码:

Public Class Form3

Private Sub Form3_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Label2.Text = Form1.username
End Sub

我应该怎么做才能让用户名的数据显示在多个表单上?

【问题讨论】:

    标签: vb.net forms winforms visual-studio


    【解决方案1】:

    不要使用表单的默认实例,为表单创建以用户名作为参数的构造函数,然后显式创建表单

    Public Class Form3
        Private _username As String
        Public Sub New(username As String)
            _username = username
        End Sub
    
        Private Sub Form3_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Label2.Text = _username
        End Sub
    End Class
    
    Public Class Form2
        Private _username As String
        Public Sub New(username As String)
            _username = username
        End Sub
    
        Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Label1.Text = $"Hi {_username}!"
        End Sub
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim formThree As new Form3(_username)
            formThree.Show()
            Me.Close()
        End Sub
    End Class
    
    Public Class Form1
        Private _username As String
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim formThree As new Form3(TextBox1.Text)
            formThree.Show()
            Me.Close()
        End Sub
    End Class
    

    使用这种方法,您无需将用户名公开为 Form1 的公共属性。

    【讨论】:

      猜你喜欢
      • 2015-12-26
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 2012-02-16
      • 1970-01-01
      • 2013-01-24
      • 2020-02-12
      相关资源
      最近更新 更多