0

3 つのラジオ ボタンがあります。画像をご覧ください。

ラジオボタン

変数を定義します

char temp;

私が欲しいのは

「男性」を選択した場合

temp = "M";

「女性」を選択した場合

temp = "F";

「両方」を選択した場合

temp = "B".

私の未完成のコード:

temp = Convert.ToChar(this.Controls.OfType<RadioButton>().FirstOrDefault(r => r.Checked));

アドバイスをありがとう。

編集: コントロールはグループボックスにあります。デバッグモードで。エラーが発生しました。

?groupBox4.Controls.OfType() {System.Linq.Enumerable.OfTypeIterator} ソース: null および ?groupBox4.Controls.OfType().FirstOrDefault(r=>r.Checked).Text 式にラムダ式を含めることはできません

編集 2: 画像を参照してください。コードを実行すると、例外が発生します。 エラー

4

2 に答える 2

3

私が正しく理解していれば、これは、各 RadioButton の名前が異なる文字で始まるという (あまり推奨されない) 仮定に基づいています。

temp = Convert.ToChar(this.Controls.OfType<RadioButton>().FirstOrDefault(r => r.Checked).Name.Substring(0, 1));

編集:同じ仮定ですが、 NameプロパティではなくTextプロパティに 基づいています

    temp = Convert.ToChar(this.Controls.OfType<RadioButton>().FirstOrDefault(r => r.Checked).Text.Substring(0, 1));

Edit2: (OPs Edit に基づく - Checked RadioButton が存在することの確認):

RadioButton rb = this.Controls.OfType<RadioButton>().FirstOrDefault(r => r.Checked);

if (rb != null)
{
    temp= rb.Text[0];
}
于 2012-06-04T13:46:42.600 に答える
0

そのはず:

Controls.OfType<RadioButton>().Where(r => r.Checked).FirstOrDefault();
于 2012-06-04T17:34:03.893 に答える