【发布时间】:2012-04-03 07:32:56
【问题描述】:
在我当前的应用程序中,我有一个main form: frmMain,里面有一个statusstrip 和一个label: lblStatus。
我想从我的用户控件中更新该标签,当我单击相关按钮时,我将其添加到我的主窗体中:
ucBeheer ucBeheer = new ucBeheer();
splitContainer1.Panel2.Controls.Add(ucBeheer);
当我执行操作时,我想从我的usercontrol 内部更新lblStatus。我尝试将以下属性添加到我的主窗体中:
public string updateStatus
{
get { return lblStatus.Text; }
set { lblStatus.Text = value; }
}
然后在我的用户控件中访问这样的方法:
frmMain mainForm = new frmMain();
mainForm.updateStatus = "This is a test";
但这不起作用,我知道这是因为我正在创建我的frmMain 的新对象,但我不知道如何解决这个问题?
我还找到了following way,带有Event Handler,但我不能这样做,因为我的用户控件实际上还没有在我的mainForm中,直到我通过单击按钮将它添加到那里,所以我没有参考。
所以我有点没有想法,我希望有人可以帮助我。 谢谢, 托马斯
编辑:所以我设法做到了以下方式:
frmMain owningForm = (frmMain)this.Parent.Parent.Parent.Parent;
owningForm.updateStatus = "This is a test";
但是this.Parent.Parent.Parent.Parent... 对我来说似乎并不是很好的编码,有没有其他方法可以获得最顶级的父母?
【问题讨论】:
标签: c# .net winforms user-controls label