2016-08-12 17 views
1

をチェックした得れば、私は私がGroupBoxに保存されているいくつかのラジオボタンを持つWindowsフォームアプリケーションを、持っています。選択したラジオボタンに基づいて異なるGroupBoxを有効にする必要があります。がグループボックス内の任意のRadioButtonが

groubBox.Enterは私が探していたEventHandlerではないようです。自分のやり方をする方法はありますか、それともそれぞれのハンドラを作成する必要がありますかradiobutton.CheckedChanged

編集

アプリケーションのワークフローは次のとおりです。GroupBoxが有効になります→

ファイルを選択します→Panel/ComboBoxTextBoxは、選択RadioButton

+1

すべてのラジオボタンで使用するハンドラを1つ作成できます。もちろん、このハンドラ内の異なるラジオボタンを区別する必要があります。それはどんな方法でもあなたを助けますか? – Lundsern

+0

チェックされたラジオボタンがあるかどうかをチェックするには、最も簡単なオプションは、linqクエリを使用することです。しかし、ラジオボタンに基づいてグループボックスを有効または無効にするための主な要件は、データバインディングを使用することです。 –

+0

また、問題の一部として解決策を投稿しないでください。将来の読者にとっては混乱します。最高のソリューションを受け入れることができます。また、便利な回答をアップアップすることができます。また、より良い答えがあると思う場合は、自分の回答を投稿することもできます。また役に立つ別の答えにリンクするには、単にコメントを使用してください:) –

答えて

1

レッツに応じて有効になりますgbRadioButtonsをGroupBoxの名前にして、特定のGroupbox内の各radioButtonを反復処理し、選択されているかどうかを確認できます。b

bool isAnyRadioButtonChecked = false; 
foreach (RadioButton rdo in gbRadioButtons.Controls.OfType<RadioButton>()) 
{ 
    if (rdo.Checked) 
    { 
     isAnyRadioButtonChecked=true; 
     break; 
    } 
} 
if (isAnyRadioButtonChecked) 
{ 
    // Code here one button is checked 
} 
else 
{ 
    // Print message no button is selected 
} 
+0

nvm、あなたの答えは解決策です。どうもありがとうございました –

0

CheckedChangedイベントハンドラ、それは回答者例えば

中のためGroupBoxを参照するようにRadioButton.Tagを設定し、すべてのラジオボタン
のための1つを作成します。y次のコードを使用して(確認したい、このコードが含まれます)コンストラクタGroupBoxを有効にする

public YourForm() 
{ 
    radioButton1.Tag = groupBox1; 
    radioButton2.Tag = groupBox2; 
    radioButton3.Tag = groupBox3; 

    radioButton1.CheckedChanged += radioButtons_CheckedChanged; 
    radioButton2.CheckedChanged += radioButtons_CheckedChanged; 
    radioButton3.CheckedChanged += radioButtons_CheckedChanged; 
} 

void radioButtons_CheckedChanged(object sender, EventArgs e) 
{ 
    RadioButton button = sender as RadioButton; 
    if (button == null) return; 

    GroupBox box = button.Tag as GroupBox 
    if (box == null) return; 

    box.Enabled = button.Checked; 
} 

01内のすべての子コントロールを可能にします