0

私は C# の初心者で、家で仕事をしています。フォームには、5 つのラジオ ボタンと数字のアップ/ダウンを含むグループ ボックスがあります。番号を変更すると。up-down、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;
4

2 に答える 2

2

switchステートメントはそのようには機能しません。

その中括弧の中にはswitch ( )、何らかの値をもたらす式が必要です(これ「名前」ではありませんが、単一の変数である可能性があります)。これらcaseのsには、スイッチ式の値と照合される(コンパイル時の)定数が必要です。

あなたはそれをたくさんの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;
于 2012-10-31T15:48:25.773 に答える
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.
                    }
                }
            }
}

コード全体は次のようになります。

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";
                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;
                    }
                }
            }
   }           
于 2012-10-31T15:40:04.940 に答える