2013-05-10 71 views
0

与此相关的话题:未将对象引用设置为对象的实例。 [NullReferencceException了未处理]

if condition for MDI Parent Control

我需要frmMain(形式)来调用从我的标签文本DtextEditoR(形式)到另一个标签。我用定时器来代替按钮,因为我遵循此处答案: 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; } 
     } 

但事情是这个错误总是sh行: enter image description here

我该怎么做才能消除这个错误?请帮助非常感谢!

+0

因此,您在每个名为'lblcountline'的窗体上都有一个'Label'对象? – Adrian 2013-05-10 06:51:28

+0

哪一行会引发错误? Dtexteditor在哪里初始化?你的代码/问题根本不清楚。 – bobbyalex 2013-05-10 06:51:52

+0

@Adrian,是的差异表单的标签都有相同的名称 – Elegiac 2013-05-10 06:52:36

回答

1

检查如下:
检查变量在构造函数不为空
2之后的InitializeComponent你可以设计对象:

public frmMain(Form callingForm) 
{ 
InitializeComponent(); 
a = callingForm as DtexteditoR; 
} 

3- 你的任务两侧似乎是相同的: a.lblcl = lblcountline.Text表示:

lblcountline.Text = lblcountline.Text : lblcountline.Text = value !! 

4-检查计时器间隔并在初始化后启用它izeComponent(在designto假集)

public frmMain(Form callingForm) 
{ 
InitializeComponent(); 
a = callingForm as DtexteditoR; 
timer1.enabled=true; 
} 
+0

还是没变:/ ...... – Elegiac 2013-05-10 06:54:31

+0

你的定时器时间间隔很小,试试更大的时间间隔和调试非空或空的变量 – mojtaba 2013-05-10 06:56:04

+0

仍然没有变化甚至间隔小错误还是大错:/ @mojtaba – Elegiac 2013-05-10 06:57:10

1

你不能指望a = callingForm as DtexteditoR摆脱定时器或点击链接速度不够快它填补当你调用它作为你的frmMain()第一行不为空功能。跳过这些。您必须在frmMain()中的新代码上调用旧代码后填充旧代码后面的callingForm变量。假设lblcountlinecallingForm上,那么您将在该代码中设置a.lblcl = lblcountline.Text;,然后在您的frmMain()中,它应该对您可用。

相关问题