微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

VB.NET设置另一种形式的文本框的文本值

如何解决VB.NET设置另一种形式的文本框的文本值

从form1打开form2并单击form2时,我需要的是单击anothe butto,然后设置form1的文本框的值。

如果我将应用程序的类型设置为Windows窗体应用程序就可以了,但是如果我将其设置为类库,则我对非共享成员的错误引用需要对象引用。

如果我引用Dim frm = New form2,则打开第二个form2,我不想要它。

如何解决这个问题?

谢谢。

代码如下:

Public Class Form1
Private Sub Button1_Click(sender As Object,e As EventArgs) Handles Button1.Click
Form2.ShowDialog()
End Sub
End Class


Public Class Form2
Private Sub Form2_Load(sender As Object,e As EventArgs) Handles MyBase.Load

End Sub

Private Sub Button1_Click(sender As Object,e As EventArgs) Handles Button1.Click
    Form1.TextBox1.Text = "aaaa"
    Me.Close()

End Sub
End Class

解决方法

在构建vb.net winforms项目时,该项目中会生成一些额外的代码。例如,Form类的静态实例,因此您可以通过类名称Form1.ShowDialog()访问实例方法。

这样做是为了让VB6程序员更轻松地从VB转换到VB.NET。

当您将项目更改为库项目时,此代码不再生成,并且Form1只是一个类,您无法直接访问实例方法,而需要“手动”实例化实例。

不要使用此“隐藏”共享实例,而是手动创建表单实例。您可以将form1的实例传递给form2的构造函数,然后从那里更新form1。

因为您使用的是ShowDialog,所以我建议使Form2不依赖于Form1,而不是直接更新Form1文本框(您希望避免将Form控件公开),返回值作为对话框的结果

Public Class Form2
  Public Property ResultValue As String

  Private Sub Button1_Click(s As Object,e As EventArgs) Handles Button1.Click
    ResultValue = "Value from Form 2";
    DialogResult = DialogResult.OK; ' This suppose to close the form
  End Sub
End Class

Public Class Form1
  Private Sub Button1_Click(s As Object,e As EventArgs) Handles Button1.Click
    Using form As New Form2()
      Dim result As DialogResult = form.ShowDialog()
      If result = DialogResult.OK Then
        TextBox1.Text = form.ResultValue
      End If
    End Using
  End Sub
End Class
,

将以下内容添加到form1

Public static sub changeTitle(myTextBox as Object,title as string)
myTextBox.Text=title
End sub

在form2中调用上述函数

Form1.changeTitle(Form1.TextBox1,"new title")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。