2

私はWinFormsに苦労しています。GroupBox3 つの s をラップする aがありますRadioButton。デザインビューを使用してそれらを追加し、コンストラクター内ですべてのボタンを対応する列挙値にタグ付けします

public MyApp()
{
   radioBtnBasic.Tag = UserChoiceEnum.Basic;
   radioBtnLite.Tag = UserChoiceEnum.Lite;
   radioBtnStandard.Tag = UserChoiceEnum.Standard;
}

私のクラス内には、Dictionaryこの列挙型をキーとして使用するタイプのプロパティ プロパティがあるため、ユーザーが winform ボタンをクリックしたときに、どのラジオ ボタンがチェックされているかを認識し、その辞書に割り当てる必要があります。

チェックされたオプションを取得する方法を見つけました

var choice = grpBox1.Controls.OfType<RadioButton>().FirstOrDefault(x => x.Checked);

どの Enum がチェックされているかを認識するために switch ステートメントを使用する必要がありますか、それとももっと良い方法がありますか?

4

3 に答える 3

6

次の方法で UserChoiceEnum を取得します。

RadioButton choice = grpBox1.Controls.OfType<RadioButton>().FirstOrDefault(x => x.Checked);
UserChoiceEnum userChoice = (UserChoiceEnum)choice.Tag;
于 2013-07-18T06:11:27.040 に答える
2

設定Tagすると、必要なときにいつでも元に戻すことができます。元の型にキャストする必要があることに注意してください。何かのようなもの:

var choiceAsEnum = (UserChoiceEnum)choice.Tag;
于 2013-07-18T06:08:23.647 に答える