2017-03-07 18 views
0

私が選択した3つのラジオボタンのどれに応じてコードを実行できるようにするスイッチケースステートメントを開発しようとしています。私はこれが成功した場合は私に教えてメッセージボックスステートメントを持っているが、それは私が、私はラジオボタン付きスイッチケース - C#

何か間違ったことをやっている何かアドバイスは素晴らしい

public void button2_Click(object sender, EventArgs e) 
    { 

     RadioButton radioBtn = new RadioButton(); 
     if (radioBtn.Enabled == true) 
     { 
      switch (radioBtn.Name) 
      { 
       case "radioButton1": 
        ComicBooks CB = new ComicBooks(); 
        CB.setTitle(textBox1.Text); 
        MessageBox.Show(CB.Title); 
        break; 

       case "radioButton2": 
        //do something 
        break; 

       case "radioButton3": 
        //do something 
        break; 

      } 

     } 
+2

'のRadioButton radioBtn =(ラジオボタン)送信者;' –

+4

あなたを名前なしで新しい 'RadioButton'を作成しているので、何もしません。 – Pikoh

+1

いいえ@JohnnyMopp。これはボタンクリックイベントのようですので、送信者をRadioButtonにキャストすることはできません – Pikoh

答えて

1

あなたのコードに問題があるだろうと確信して示していることはありません

RadioButton radioBtn = new RadioButton(); 

このインスタンスは、あなたのUIに何も接続されていない、そしてそれがどのswitchケースが一致しないので、setted何Name性質を持っていない:あなたがここにRadioButtonの新しいインスタンスを作成しているということです。 RadioButtonsはフォーム自体に含まれていない場合

RadioButton radioBtn = this.Controls.OfType<RadioButton>() 
             .Where(x=>x.Checked).FirstOrDefault(); 
if (radioBtn!=null) 
{ 
    switch (radioBtn.Name) 
    { 
     case "radioButton1": 
      //Your switch structure here ... 

} 

を、しかし:あなたはボタンをクリックして、その名前に依存何かをするときRadioButtonが選択されているものを確認したい場合は

、あなたはこれを行うことができますパネルで、たとえば、あなたは、このための私のコードの最初の行を変更する必要があります:

RadioButton radioBtn = this.panel1.Controls.OfType<RadioButton>() 
              .Where(x=>x.Checked).FirstOrDefault(); 

お知らせthis.panel1.Controls一部

+0

'var name = this.panel1.Controls.OfType ().FirstOrDefault(x => x.Checked)?. Name;はもっと慣用的です。 –

1

この行では、新しいRadioButtonオブジェクトを作成し、radioBtnという名前の参照を作成しています。

RadioButton radioBtn = new RadioButton(); 

だから、あなたのswitch文では、あなたのブロックのどれもradioBtn.Nameがnullであることを行っているので、入力されていない、または.NETフレームワークによって割り当てられたいくつかのデフォルト値されています。

新しいRadioButtonを作成する代わりに、Visual Studioグラフィカルデザイナを使用して追加した既存のRadioButtonの値をチェックしたいと思うかもしれません。 (私はあなたがデザイナーであなたの実際のラジオボタンの名前がわからないので、作らアップの名前を持つ)だからあなたのコードは以下のようになります。

public void button2_Click(object sender, EventArgs e) 
{ 
    if (radioButton1.Checked) 
    { 
    ComicBooks CB = new ComicBooks(); 
    CB.setTitle(textBox1.Text); 
    MessageBox.Show(CB.Title); 
    } 
    else if (radioButton2.Checked) 
    { 
    // do something 
    } 
    else if (radioButton3.Checked) 
    { 
    // do something 
    } 
} 
+0

ありがとうございます。 switch文がif文の代わりにこの方が良いと言われました。あなたはいずれかの方法を行くことができるように見える – Justin

+0

@ジャスティンスイッチもこの点で問題ありませんが、この回答のロジックは、使用するコントロール構造に適用されます。 –

+0

@AluanHaddad、情報ありがとう! – Justin

関連する問題