1

私はコードのこの部分を持っています:(ボタンのクリックイベントで)

           foreach (RadioButton rb in grbFiltro.Controls.OfType<RadioButton>())
       {
           if (((RadioButton)rb).Checked)
           {
               switch (true)
               {
                   case rbt1.Checked:
                       //do something
                       break;
                   case rbt2.Checked:
                      //do something
                       break;
                   case rbt3.Checked:
                        //do something
                      break;
               }
           }
       }

しかし、ラジオボタンを文字列に変換する際にエラーが発生します ---> ケース rbt1.Checked

これを修正するにはどうすればよいですか、それとも他に何を使用できますか?

4

3 に答える 3

1

あなたは25個のボタンを持っているので、私はおそらく次のようなことをするでしょう

 IEnumerable<RadioButton> buttons = grbFiltro.Controls.OfType<RadioButton>();
    foreach (var Button in buttons)
    {
         if (Button.Checked)
         {
             //Do Something
         }
     }

ボタンごとに異なることをする必要がある場合は、必要なものに基づいて行うif / elseチェーンがありますが、選択した値を保存してそれを使って何かをしたいと思っていると思います。

于 2013-02-07T13:48:07.417 に答える
1
var rb = grbFiltro.Controls.OfType<RadioButton>()
             .SingleOrDefault(rb => rb.Checked.GetValueOrDefault()) as RadioButton;

if (rb!=null)
    switch (rb.Name)
           {
               case "button1":
                   //do something
                   break;
               case "button2":
                  //do something
                   break;
               case "button3":
                    //do something
                  break;
           }
于 2013-02-07T13:47:08.130 に答える
0

CheckedChange にリスナーを追加して、現在選択されているラジオ ボタンを常にフィールドに格納することもできます。次に、確認ボタンがクリックされたら、その値を読み取る必要があります。これは、ラジオボタンが 10 個以上ある場合に便利です。

private RadioButton selectedButton;

//handler for Radio Buttons.
private void onRadioChange(Object sender, EventArgs e){
    if (((RadioButton)sender).Checked)
       this.selectedButton = (RadioButton)sender;
}

// handler for confirm button.
private void confirm(Object sender, EventArgs e){
   MessageBox.show(selectedButton.name + " selected");
}

未テストですが、方法はうまくいくはずです。

于 2013-02-07T13:54:05.017 に答える