2012-10-31 28 views
0

我是C#的初學者,我有家庭作業。在表格中,我有一個帶有5個單選按鈕和數字向上/向下數天的組合框。當我改變數字。上下,backcolor應該改變它之前選擇的顏色。我只能使用開關盒。我管理了這個數字。上下,一個標籤隨它變化。但是我無法插入顏色改變的開關盒。其實我無法命名開關。僅使用開關盒改變單色按鈕的背景色

private void Form1_Load(object sender, EventArgs e) 
     { 
      label1.Text = "Pazartesi"; 


     } 

     private void numericUpDown1_ValueChanged(object sender, EventArgs e) 
     { 
      byte sayi = Convert.ToByte(numericUpDown1.Value); 


      switch (sayi) 
      { 
       case 1: 
        label1.Text="Pazartesi"; 
        switch () 
        { 
         case renkbtn_1.Checked: 
          this.BackColor = Color.Red; 
          break; 
         case renkbtn_2.Checked: 
          this.BackColor = Color.White; 
          break; 
         case renkbtn_3.Checked: 
          this.BackColor = Color.Yellow; 
          break; 
         case renkbtn_4.Checked: 
          this.BackColor = Color.Blue; 
          break; 
         case renkbtn_5.Checked: 
          this.BackColor = Color.Green; 
          break; 
        } 
        break; 
       case 2: 
        label1.Text="Salı"; 
        break; 
       case 3: 
        label1.Text = "Çarşamba"; 
        break; 
       case 4: 
        label1.Text = "Perşembe"; 
        break; 
       case 5: 
        label1.Text = "Cuma"; 
        break; 
       case 6: 
        label1.Text = "Cumartesi"; 
        break; 
       case 7: 
        label1.Text = "Pazar"; 
        break; 

回答

0

如果我的理解這個問題,你改變上下值,你要設置背景色,以無論是你選擇的單選按鈕的顏色。對?

如果是這種情況,你必須得到檢查哪個單選按鈕,然後正確設置顏色。

然後你可以通過你的分組框中的控件進行迭代,以獲得檢查無線電:

foreach (Control c in groupBox1.Controls) 
      { 
       if (c.GetType() == typeof(RadioButton)) 
       { 
        RadioButton rb = c as RadioButton; 
        if (rb.Checked) 
        { 
         //here you can either store the checked radio button in a variable to further check the color you need to set, or do the logic here. 
        } 
       } 
      } 
} 

你的整個代碼可能是這樣的:

私人無效Form1_Load的(對象發件人,EventArgs的) {title =文本=「Pazartesi」;

} 

    private void numericUpDown1_ValueChanged(object sender, EventArgs e) 
    { 
     byte sayi = Convert.ToByte(numericUpDown1.Value); 


     switch (sayi) 
     { 
      case 1: 
       label1.Text="Pazartesi"; 
       break; 
      case 2: 
       label1.Text="Salı"; 
       break; 
      case 3: 
       label1.Text = "Çarşamba"; 
       break; 
      case 4: 
       label1.Text = "Perşembe"; 
       break; 
      case 5: 
       label1.Text = "Cuma"; 
       break; 
      case 6: 
       label1.Text = "Cumartesi"; 
       break; 
      case 7: 
       label1.Text = "Pazar"; 
       break; 
     } 
     RadioButton selectedRadio = GetSelectedRadioButton(); 

     switch(selectedRadio.Name) 
     { 
      case rankbtn_1.Name: 
       this.BackColor = Color.Red; 
       break; 
      case rankbtn_2.Name: 
       this.BackColor = Color.White; 
       break; 

      //Repeat for the other buttons. 
     } 

    } 

    private RadioButton GetSelectedRadioButton() 
    { 
       foreach (Control c in groupBox1.Controls) 
      { 
       if (c.GetType() == typeof(RadioButton)) 
       { 
        RadioButton rb = c as RadioButton; 
        if (rb.Checked) 
        { 
         return rb; 
        } 
       } 
      } 
    }   
2

switch語句不能這樣工作。

大括號裏面的那個switch ()應該是一個表達式,它會產生一些值(它是而不是 a'name',但可能是單個變量)。 這些case必須具有(編譯時)常量,這些常量將根據開關表達式的值進行檢查。

你必須把它改寫了一堆的if聲明:

if (renkbtn_1.Checked) 
     this.BackColor = Color.Red; 
    else if (renkbtn_2.Checked) 
     this.BackColor = Color.White; 
    else if (renkbtn_3.Checked) 
     this.BackColor = Color.Yellow; 
    else if (renkbtn_4.Checked) 
     this.BackColor = Color.Blue; 
    else if (renkbtn_5.Checked) 
     this.BackColor = Color.Green; 
+0

我的理解是,他需要做的,只有使用switch語句。 – digaomatias