【问题标题】:Setting a value in a textbox from another form从另一个表单在文本框中设置值
【发布时间】:2014-08-03 02:20:00
【问题描述】:

我使用的是 vb.net 2013。我有 3 个表单:Form1、Form2、Form3

在 form1 我有一个按钮。当这个按钮被按下时,form2被打开。点击事件里面的代码是:

Dim dlg1 As New Form2

dlg1.Show(Me)

在From2里面我有一个TextBox (Txt1)和一个按钮。当这个按钮被点击时,Form3被打开。点击事件里面的代码是:

Dim dlg2 As New Form3

dlg2.Show(Me)

在 form3 中,我有一个按钮,用于在 Form2 的文本框 (txt1) 中设置值。我使用此代码:

Form2.txt1.Text="123"

问题是我按下form3上的按钮后,form2上的文本框是空的,没有设置值。

我能做什么? (我不想改变表单的打开方式)

谢谢!

【问题讨论】:

  • 您的 Form2 instance 称为 dlg2,因此请以这种方式引用它(前提是对话框仍处于打开状态)。 Form2 只是引用了表单类
  • 自动实例的奇迹.....

标签: vb.net


【解决方案1】:

Form2.txt1 引用表单的default instance

您在这里使用了一个新实例:

Dim dlg1 As New Form2

您需要替换此代码:

Dim dlg1 As New Form2
dlg1.Show(Me)

Form2.Show(Me) 'not recommended

或者将表单的Owner 转换为之前表单的类型,并设置属性(推荐):

DirectCast(Me.Owner, Form2).txt1.Text = "123"

【讨论】:

  • 我尝试使用此代码:CType(Me.Owner, Form2).Txt1.Text = "123" 但有同样的问题。文本框上没有文本。
  • @alex:请粘贴您拥有的所有代码(或创建一个空项目,尝试在那里复制它,并将其作为参考)。除非我们遗漏了一些细节,否则该方法应该有效。然而,其他代码可能会产生干扰。
  • 没有其他代码。只有打开表单的代码和将值设置为文本框的代码。
  • @alex:那你能把项目分享为 ZIP 文件吗?那我可以看看。
  • 我不知道为什么,但只有这个有效:Dim fr as Form2=DirectCast(Me.Owner,Form2) fr.txt1.text="123"
【解决方案2】:

只需使用 Form2.Show() , Form3.Show() 打开表单
然后如果你把它放在你的 Form3 按钮点击事件“Form2.txt1.Text="123"”中它会起作用。

【讨论】:

  • dlg1 在 dlg2 范围内很可能无法访问。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多