与本专题有关:
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; }
}但问题是,这个错误总是表明:

我该怎么做才能消除这个错误呢?请帮忙,非常感谢!
发布于 2013-05-10 06:52:56
检查以下内容:
1-检查变量a在构造函数中不为空。
2-在InitializeComponent之后,您可以获得设计对象:
public frmMain(Form callingForm)
{
InitializeComponent();
a = callingForm as DtexteditoR;
}3-您的任务双方似乎都是相同的: a.lblcl = lblcountline.Text,意思是:
lblcountline.Text = lblcountline.Text : lblcountline.Text = value !!4-检查计时器间隔并在InitializeComponent之后启用它(设置为false )
public frmMain(Form callingForm)
{
InitializeComponent();
a = callingForm as DtexteditoR;
timer1.enabled=true;
}发布于 2016-06-21 16:19:26
您不能期望a = callingForm as DtexteditoR从计时器或按钮中得到填充,因此当您将它作为frmMain()函数的第一行调用时,单击它的速度不会为空。跳过这些。相反,您必须在旧的callingForm表单代码隐藏中填充变量,然后才能在frmMain()中的新表单中调用它。假设lblcountline在callingForm上,您将在该代码中设置a.lblcl = lblcountline.Text;,然后,在您的frmMain()中,它应该对您可用。
https://stackoverflow.com/questions/16476668
复制相似问题