【问题标题】:Values is not appearing in Current active Form值未出现在当前活动表单中
【发布时间】:2011-10-22 08:11:36
【问题描述】:

使用 VB.Net(Windows 应用程序)

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

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

Button1 点击

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

我有用于在数据输入表单中选择值的弹出窗口。

从弹出窗口中选择值的代码

弹窗代码

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

上述弹出窗口代码适用于数据输入表单,但不适用于新表单(在运行时)

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

弹出窗口选择的值应该以当前活动形式出现。

我的代码有什么问题。

需要 VB.Net 代码帮助

【问题讨论】:

    标签: vb.net visual-studio


    【解决方案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 的实例。 (请注意,我也为按钮单击事件代码更改了弹出表单实例的名称)

    【讨论】:

    • 这往往会引发 NullReferenceException。 OP 使用 frmEntry 的原因。
    • 我想我认为他创建的表单实例仍在范围内。当然,如果不是,它会生成一个空引用......我认为他 OP 忽略了他使用类型名称而不是表单名称。
    • 原来代码是另一种形式,他对我的回答留下了评论。
    • 根据 cmets 更新。希望我现在处于正确的状态并更好地理解这个问题。
    • @D.您的代码正在运行,但我无法引用 Entryform 中的弹出窗口。例如 Popwindows 表单名称为“frmlist”。在 EntryForm 中,我提到了类似 frmlist.show() 的按钮单击,但它显示错误为“对非共享成员的引用需要对象引用”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-24
    相关资源
    最近更新 更多