【发布时间】:2010-10-16 22:04:30
【问题描述】:
我有一个父表单,其中包含一个包含名字、姓氏等的“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);
}
这是我在 Cell 上运行的代码 单击搜索表单。这是在我尝试实现 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
我通过执行以下操作“解决”了这个问题:在我声明子表单的父表单上,我将 this 作为参数传递。然后在子窗体的构造函数中添加了 _frmWWCModuleHost = m_parent;我的父窗体上有一个 UpdateHUD() 方法,我从子窗体的 _CellClick 事件中调用它。
现在重新表述我的问题;这样做有什么明显的错误吗?
【问题讨论】: