与此主题相关:
if condition for MDI Parent Control
我需要将 DtextEditoR (表单)中我的标签中的文本调用到 frmMain (表单)中的另一个标签。我使用计时器而不是按钮,因为我按照这里的答案: Communicate between two windows forms in C#
导致:
frmMain.cs:
private DtexteditoR a;
public frmMain(Form callingForm)
{
a = callingForm as DtexteditoR;
InitializeComponent();
}
private void timercountline_Tick(object sender, EventArgs e)
{
a.lblcl = lblcountline.Text;
}
DtexteditoR.cs
public string lblcl //rich
{
get { return lblcountline.Text; }
set { lblcountline.Text = value; }
}
但事情是这个错误总是显示:
我该怎么做才能删除该错误?请帮助多多!
答案 0 :(得分:1)
检查以下内容:
1-
检查构造函数中的变量a不为空
在InitializeComponent之后,您可以获得设计对象:
public frmMain(Form callingForm)
{
InitializeComponent();
a = callingForm as DtexteditoR;
}
3- 您的任务双方似乎相同:a.lblcl = lblcountline.Text表示:
lblcountline.Text = lblcountline.Text : lblcountline.Text = value !!
4-检查定时器间隔并在InitializeComponent(在designto中设置为假)后启用它
public frmMain(Form callingForm)
{
InitializeComponent();
a = callingForm as DtexteditoR;
timer1.enabled=true;
}
答案 1 :(得分:1)
当你将a = callingForm as DtexteditoR
作为frmMain()
函数中的第一行调用它时,你不能期望callingForm
从定时器或按钮单击足够快以使其不为空。跳过这些。相反,您必须在旧frmMain()
表单代码后填充变量,然后在lblcountline
中的新表单上调用它。假设callingForm
位于a.lblcl = lblcountline.Text;
,您可以在该代码中设置frmMain()
,然后在wbits
中,您可以使用该代码。