2015-01-01 23 views
-1

新年快樂大家好!單選按鈕從另一個類返回false

我有一個問題,從窗體發送一個布爾值到一個類,其中通過代碼來改變窗體的代碼。

所以我有一個radioButton(rb2),當點擊時啓動一個線程。但是,我需要的是radioButton向另一個類返回true或false。

public class Airport : Form 
{ 
    public RadioButon rb2; 

    public void rb2_Checked(Object sender, EventArgs e) 
    { 
     if (rb2.Checked == true) 
     { 
      thread3 = new Thread(new ThreadStart(p2.Start2)); 
      thread3.Start(); 
     } 
    } 
} 

以下是需要從機場類中獲取false值的類。但是,當我打印出來(r)時,它總是打印出錯誤。我已經嘗試了幾件事情,但他們還沒有工作。

class Hubs 
{ 
    public void Start2 
    { 
     Airport ap = new Airport(); 
     RadioButton r = ap.rb2; 
     Console.WriteLine(r); 

     if(r.Checked == true) 
     { 
      Console.WriteLine("Check r"); 
     } 

    } 
} 

任何人有任何想法,可能會導致新的radioButton在我的新班級不斷打印假?

+2

您正在創建機場表單的新實例和單選按鈕的新實例。這個新實例不知道機場表單初始實例上的原始單選按鈕rb2的已檢查狀態。 – Steve

+0

乾杯,爲了答案,但我還想怎麼做呢? –

+0

將機場實例從形式傳遞給方法 –

回答

1

考慮加入一個參數,你的方法,它在機場類的一個實例:

class Hubs 
{ 
    public void Start2(object airport) 
    { 
     var ap = airport as Airport; 
     if (ap == null) return; 

     RadioButton r = ap.rb2; 
     Console.WriteLine(r); 

     if (r != null && r.Checked) 
     { 
      Console.WriteLine("Check r"); 
     } 
    } 
} 

然後(使用this)機場的實例傳遞給當你調用它的方法:

public class Airport : Form 
{ 
    public RadioButon rb2; 

    public void rb2_Checked(Object sender, EventArgs e) 
    { 
     if (rb2 != null && rb2.Checked) 
     { 
      var x = new Hubs(); 
      var thread3 = new Thread(x.Start2); 
      thread3.Start(this); 
     } 
    } 
} 
+0

不確定您可以從另一個線程讀取該UI控件。只傳遞狀態真/假? – Steve

+0

似乎爲我工作,雖然你從來沒有看到一個控制檯窗口... –

相關問題