2013-05-12 54 views
0

我碰到過這種情況:「如果我選擇了一個單選按鈕並且選中了一個特定的複選框,那麼單選按鈕的文本應該被複制到一個文本框中。如何在c#中調用方法中傳遞值#

public void radiobutton_CheckedChanged(object sender, EventArgs e) 
{ 
    object s; 
    s = radiobutton.Text; 
    checkBox2_CheckedChanged(s,e); 
} 

private void checkBox2_CheckedChanged(object sender,EventArgs e) 
{ 
    if (checkBox2.Checked == true) 
    { 
     textBox.Text = Convert.ToString(sender); 
    } 
} 

我試過這個代碼,但它不工作。什麼可能導致它無法正常工作?

+0

的方法被調用的單選按鈕更改事件,然後將加載文本的複選框的文本,但選擇複選框,當再次事件將調用的CheckedChanged方法並沒有數據在發件人對象... – Learner 2013-05-12 15:40:31

+0

否則,你可以這樣做,你檢查複選框檢查在同一個radiochecked事件驗證,並複製文本 – Learner 2013-05-12 15:41:23

+6

「不工作」不是一個有效的錯誤描述。告訴我們,發生了什麼,以及你會發生什麼。另外,你有沒有嘗試過調試? – 2013-05-12 15:43:27

回答

8

好,你可以做一個更簡單的方法:

public void radiobutton_CheckedChanged(object sender, EventArgs e) 
{ 
    if (checkBox2.Checked == true) 
    { 
     textBox1.Text = radiobutton.Text; 
    } 
} 
+0

更容易,但它不能滿足所有情況。如果複選框在單選按鈕後單擊,怎麼辦? – Xaruth 2013-06-18 13:27:52

+0

這是真的,在這種情況下,你需要另一個事件處理程序,但問題說**如果我選擇一個單選按鈕,並選擇了一個特定的複選框**這意味着選擇「複選框」之前發生'radiobutton'我認爲 – Mehran 2013-06-18 13:34:11

+1

我也是這樣讀的,Mehran。聽起來就像用戶想要僅在複選框被選中時才執行該文本的副本。 – 2013-06-20 00:19:50

1

你的問題不是很清楚,但是這是我的理解:

當選擇一個複選框,你想要的文字在文本框中選定的單選按鈕。您可以先單擊單選按鈕然後複選框,或複選框,然後更改單選按鈕。

你必須觸發每個事件,並有一個動作(更新文本框):

private void checkBox1_CheckedChanged(object sender, EventArgs e) 
    { 
     this.UpdateTextBox(); 

     // other thing if you want 
    } 

    private void radioButton2_CheckedChanged(object sender, EventArgs e) 
    { 
     this.UpdateTextBox(); 

     // other thing if you want 
    } 

    private void radioButton1_CheckedChanged(object sender, EventArgs e) 
    { 
     this.UpdateTextBox(); 

     // other thing if you want 
    } 

    private void UpdateTextBox() 
    { 
     if (this.checkBox1.Checked == true) 
     { 
      String value = String.Empty; 
      if (this.radioButton1.Checked == true) 
      { 
       value = this.radioButton1.Text; 
      } 
      else if (this.radioButton2.Checked == true) 
      { 
       value = this.radioButton2.Text; 
      } 
      // and so .... 

      this.textBox1.Text = value; 
     } 
     else 
     { 
      this.textBox1.Text = String.Empty; 
     } 
    } 
2

試試這個,記住這是在這一點上對象。

private void checkBox2_CheckedChanged(object sender,EventArgs e) 
    { 
     if (checkBox2.Checked == true) 
     { 
      textBox.Text = (((object[])(sender))[0]).ToString(); 
     } 
    } 
2

解決方案1 ​​

爲什麼不呢?事件中是否有特定的原因致電checkBox2_CheckedChanged事件?

public void radiobutton_CheckedChanged(object sender, EventArgs e) 
{ 
    if (checkBox2.Checked == true) 
    { 
     textBox.Text = radiobutton.Text; 
    } 
} 

溶液2

否則代碼管理的緣故。您可以這樣做,只需將radiobutton_CheckedChanged事件傳遞給checkBox2_CheckedChanged事件即可。

public void radiobutton_CheckedChanged(object sender, EventArgs e) 
{ 
    checkBox2_CheckedChanged(s,e); 
} 

其中checkBox2_CheckedChanged事件如下。

private void checkBox2_CheckedChanged(object sender,EventArgs e) 
{ 
    if (checkBox2.Checked) 
    { 
     textBox.Text = radiobutton.Text; 
    } 
}