文本框值没有在winforms中获取另一个表单按钮单击事件

时间:2014-07-17 10:00:56

标签: vb.net winforms

我正在处理Windows窗体应用程序,我有两种形式。 1是visitorinfo 2是vistorexitsign。

在visitorinfo中我有保存按钮,而cliking保存按钮我希望从vistirexitsign表单中获取textbox值。

两个表单同时运行,我在访问者信息表单的保存按钮中给出了这样的代码:

Private Sub BtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSave.Click
        Dim obj As New VisitorExitsign
        Dim vs As String = obj.txtvisitoridExit.Text
            Dim Visitorid As String = My.Forms.VisitorExitsign.txtvisitoridExit.Text

但我总是到这里txtvisitoridexit.text值null。没有得到文本值。

我的代码出了什么问题?

5 个答案:

答案 0 :(得分:3)

您正在每次点击活动中创建新实例。

Dim obj As New VisitorExitsign

因此,值在新对象中设置,但不在现有对象中设置。

所以实际上你必须引用VisitorExitsign的现有对象。

修改

例如:

您正在使用某种方法创建表单VisitorExitsign。

因此,无论何时创建将其引用存储在某个全局变量中。

VisitorExitsign obj = new VisitorExitsign

在您创建表单的地方

然后在点击事件中使用obj并指定文本。

答案 1 :(得分:0)

当您引用My.Forms.VisitorExitSign.txtvisitoridExit.Text时,您正在引用表单本身而不是表单的实例,如果这有意义的话。因此,您尝试访问默认表单而不是用户输入文本的表单。

您可能想要做的是更改

Dim Visitorid As String = My.Forms.VisitorExitsign.txtvisitoridExit.Text`

Dim Visitorid As String = obj.txtvisitoridExit.Text

这样做可以确保VisitoridVisitorExitSign实例中获取价值。

答案 2 :(得分:0)

尝试这样

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

        Dim forms As FormCollection = Application.OpenForms
        For Each form As Form In forms
           If form.Name = "VisitorExitsign" Then
            Dim vs As String = CType(form, VisitorExitsign).txtvisitoridExit.Text
          End If
        Next

    End Sub

宝贵意见:

 frmVX = New VisitorExitsign 
frmVX.Location = New Point(781, 0) 
frmVX.MdiParent = Me 
frmVX.Show() 

frmVE = New VisitorInfo() 
frmVE.Location = New Point(0, 0) 
frmVE.MdiParent = Me 
frmVE.Tag=frmVX
frmVE.Show()

Button_Click事件

   Dim vs As String = CType(me.Tag, VisitorExitsign).txtvisitoridExit.Text

答案 3 :(得分:0)

希望这会有效

  • 创建module

    Module modTextValue
     Public _textVal As String
    End Module 
    
  • 然后在您的表单txtvisitoridexit

    上转到LostFocus的{​​{1}}个事件
    vistirexitsign
  • Private Sub txtvisitoridexit_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.LostFocus _textVal = txtvisitoridexit.Text End Sub

    btnSave'click

答案 4 :(得分:0)

试试这个:  在按钮保存中将代码更新为:

  Private Sub BtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSave.Click
    Dim obj As New VisitorExitsign
    obj.ShowDialog()
    Dim vs As String = obj.txtvisitoridExit.Text
  End sub

当您关闭VisitorExitsign时,变量vs将采用obj.txtvisitoridExit的值