【问题标题】:Passing string from form to new form name将字符串从表单传递到新表单名称
【发布时间】:2017-06-25 07:23:36
【问题描述】:

感谢大家的热心帮助。我有三个表单,它们需要从 NameForm 输入的字符串名称传递给 Form1 并将 Form1 重命名为放置在文本框上的任何名称。

然后在Form1中重命名为JOHN DOE,我会有各种文本框来输入数据。在我点击计算后,它会将所有数据传递给 Form3 并将 Form3 重命名为 JOHN DOE。我编写了所有代码并正常运行,将数据从 FORM1 传递到 Form3,但它没有从 NameForm 传递学生姓名并重命名 Form1 和 Form3。下面是我的 NameForm 代码,它是输入学生姓名的基本形式。如果需要更多代码,我会发布它。我不想发布所有代码并冒险投反对票。

Public Class NameForm

   Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click

        Dim name As New Form1()
        name.StringPass = Form1.Text
        name.Show()

    End Sub

    Private Sub NameForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Me.Focus()
        Me.BringToFront()
        Me.Hide()

    End Sub

End Class

【问题讨论】:

标签: string vb.net forms winforms


【解决方案1】:

我会在您想要将值传递给的表单上实现New 方法:

Form1:

Public Class Form1

    Private Sub btnPass_Click(sender As Object, e As EventArgs) Handles btnPass.Click

        Dim form As New Form2(TextBox1.Text)
        form.Show()

    End Sub

End Class

Form2:

Public Class Form2

    Public Sub New(ByVal value As String)

        ' This call is required by the designer.
        InitializeComponent()

        Label1.Text = value

    End Sub

End Class

截图:

【讨论】:

  • 谢谢大家的帮助。错误示例能够帮助我解决代码。再次感谢。
【解决方案2】:

您只需向该类声明一个公共访问级别。 (感谢 Enigmativity 的更正)

Public Class NameForm
    Public studentName As String

    Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click

         Dim name As New Form1()
         name.Text = studentName
         name.Show()

     End Sub

     Private Sub NameForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

         Me.Focus()
         Me.BringToFront()
         Me.Hide()

     End Sub

End Class

如果你想从其他类调用全局变量: 例如以备不时之需

Public Class Form3

    Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

        TextBox1.Text = NameForm.studentName

    End Sub

End Class

【讨论】:

  • 最好使用公共属性 - 属性更灵活 - 它们可以是数据绑定的,您可以包含代码 - 例如在返回之前进行验证等。
  • .NET 中没有全局变量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-03
  • 2015-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多