从Windows窗体中的另一个窗体调用函数时获取null值

时间:2014-07-17 11:38:19

标签: vb.net forms

我正在使用windows form application.i有两个froms
在MDIparant表格中我一起打开我的两个表格:

Public Class MDIParent1
    Dim frmVE As VisitorInfo
  Dim frmVX As VisitorExitsign 

Private Sub InvokeToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InvokeToolStripMenuItem.Click

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.Show()

现在两个表单都是opend。我在Visitoinfo表单中有一个保存按钮 我在visitorexitsign form.name中也有文本框是txtvisitoridExit 虽然cliking保存按钮我想检查wethar这个文本框(txtvisitoridExit)包含任何值,然后我必须在VisitorExitsign表单中的cal函数..所以我写了这样的代码:

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
                VisitorExitsign.savebutton()
            End If
        Next

如果vs。但是这里有价值 在访问VisitorExitsign页面的同时获取此文本框值(txtvisitoridExit.Text)null.how来到该值变为null 我怎么解决这个问题?

1 个答案:

答案 0 :(得分:0)

原因:您正在调用另一个范围(VisitorExitSign)中的局部变量,这将导致空值。

解决方案:为要以其他形式调用的内容定义公共静态值。

示例: - 在第一种形式

Public Static Dim textbox1 As String = txtvisitoridExit.Text

在第二个

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

结论:您将获得真正的价值。