当前位置:  开发笔记 > 编程语言 > 正文

将数据从子表单发送到父表单TextBox

如何解决《将数据从子表单发送到父表单TextBox》经验,为你挑选了1个好方法。

我有一个父母表格,其中包含带有名字,姓氏等的"HUD".其中一个子表单是一个搜索表单.当用户从DataGrid中显示的结果中选择一个成员时,我希望相关信息填写HUD.我创建了一个HUD类,其中包含每个值的变量和一个名为UpdateHUD()的方法.我不确定如何使这个工作.我引用了包含HUD的父表单的搜索表单,如下所示:

public frmWWCModuleHost _frmWWCModuleHost;

这是我用来嵌入表单的代码.我没有使用MDI.

 public static void ShowFormInContainerControl(Control ctl, Form frm)
    {
        frm.TopLevel = false;
        frm.FormBorderStyle = FormBorderStyle.None;
        frm.Dock = DockStyle.Fill;
        frm.Visible = true;
        ctl.Controls.Add(frm);
    }

这是我在搜索表单上单击"单击"时运行的代码.这是在我尝试实现HUD类之前.

private void dgvSearchResults_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
        _frmWWCModuleHost = new frmWWCModuleHost();
        _frmWWCModuleHost.tbxHUD_LastName.Text = dgvSearchResults.CurrentRow.Cells[1].FormattedValue.ToString();
        _frmWWCModuleHost.tbxHUD_LastName.Invalidate();
        _frmWWCModuleHost.FormPaint();
    }

提前致谢!

〜帕特里克


编辑


dgvSearchResults_CellContentClick现在是最新的.当我单步执行此代码时,它在此处获得正确的值,但它永远不会更新实际的HUD.


编辑2


我的问题是我宣布一个新的frmWWCModuleHost而不是将ref传递给现有的?我对此的理解仍然很弱.


编辑3


我通过执行以下操作"解决"了这个问题:在我声明子表单的父表单上,我将作为参数传递.然后在子窗体的构造函数中我添加了_frmWWCModuleHost = m_parent; 我的父窗体上有一个UpdateHUD()方法,我从子窗口的_CellClick事件中调用它.

现在重温我的问题; 这样做有什么明显的错误吗?



1> Neil Barnwel..:

子表单搜索完成后,引发"SearchCompleted"事件.然后任何东西(包括父表单)都可以订阅该事件并检索详细信息.

有关示例,请参阅以下NotepadCode:

class ParentForm
{
    private readonly ChildForm childForm;

    public ParentForm()
    {
        InitializeComponent();

        childForm = new ChildForm();

        childForm.SearchCompleted += childForm_SearchCompleted;
    }

    private void childForm_SearchCompleted(object sender, SearchCompletedEventArgs e)
    {
        // Update the display
        lblName.Text = e.DataToDisplay;
    }
}

class ChildForm
{
    public event EventHandler SearchCompleted;

    private void Search(string query)
    {
        // Do the searching

        OnSearchCompleted(new SearchCompletedEventArgs([arg values]));
    }

    public void OnSearchCompleted(SearchCompletedEventArgs args)
    {
        if (SearchCompleted != null)
        {
            SearchCompleted(this, args);
        }
    }
}

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有