2013-05-10 56 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()中,它應該對您可用。

相關問題