2011-10-22 47 views
0

使用VB.Net(Windows应用程序)值没有出现在当前活动窗体

我有一个主要的形式(数据输入表单),我创建在运行时的许多形式。

在运行时创建多个表单的代码。

Button1的单击

If IsNothing(frm) OrElse frm.IsDisposed Then 
      newfrm = New frmEntry 
    End If 
newfrm.Show() 

我有弹出窗口的selcting在数据输入表单的值。

代码selcting从弹出窗口

弹出窗口代码

If e.KeyCode = Keys.Enter Then 
frmEntry.txtbox1.Text = gridview1.Rows(crRow).Cells("code").Value.ToString().Trim()   
End If 

上方的弹出式窗口代码正在为数据输入表单的价值,但它不工作的新形式(在运行时)

当我从弹出窗口中选择值意味着它出现在frmentry文本框中,而不是在newfrm文本框中。

弹出窗口选定值应显示在当前活动窗体中。

我的代码有什么问题。

需要VB.Net代码帮助

回答

1

如果从打开弹出式的形式是你所需要的改变价值观,你认为是传递一个参考开放的形式弹出,当你打开它?所以你可以直接访问需要更新的控件的表单?

此构造在弹出的窗口:

Private mOpeningForm As frmEntry 
Public Sub New(OpeningForm As frmEntry) 

    InitializeComponent() 

    mOpeningForm = OpeningForm 
End Sub 

此修改为使用参考发送到弹出的形式的形式:

If e.KeyCode = Keys.Enter Then 
mOpeningForm.txtbox1.Text = gridview1.Rows(crRow).Cells("code").Value.ToString().Trim()   
End If 

这在窗体被创建的窗口时运行时间:

If IsNothing(mEntryForm) OrElse mEntryForm.IsDisposed Then 
      mEntryForm= New frmEntry(me) 
    End If 
mEntryForm.Show() 

在数据表单类(创建弹出窗口的顶层)

private mEntryForm as frmEntry 

这将允许您从数据表单类中的任何位置引用frmEntry的实例。 (请注意,我更改了弹出式窗体实例的名称以获取按钮单击事件代码)

+0

这往往会导致NullReferenceException异常。 OP使用frmEntry的原因。 –

+0

我想我认为他创建的表单实例仍然在范围之内。当然,如果不是它会生成空引用......我以为他OP忽略了他使用类型名称而不是表单名称。 – Jay

+0

原来,代码是另一种形式,他留下了对我的答案的评论。 –