1

System.Windows.Forms.KeysAZ、0-9、および F キーのみを含むサブセット列挙型リストを から作成したいと考えています。現在、完全なリストをwinformのコンボボックスに設定しています:

comboBox1.DataSource = Enum.GetValues(typeof (System.Windows.Forms.Keys));

このサブセットを作成する簡単な方法はありますか? 私の現在の回避策は、受け入れ可能なキーのリストをハードコーディングすることです:

private List<Keys> acceptableKeys = new List<Keys>
            {
                Keys.A,
                Keys.B, Keys.C, Keys.D, Keys.E, Keys.F, Keys.G, Keys.H, Keys.I, Keys.J, Keys.K, Keys.L, Keys.M,
                Keys.N, Keys.O, Keys.P, Keys.Q, Keys.R, Keys.S, etc....
            };

それを として使用しdataSourceます。

これを行うためのより良い方法はありますか?

4

1 に答える 1

3

ハードコーディングしたくない場合intは、列挙型の値を確認してリストに追加してみてください。

var enums = Enum.GetValues(typeof(Keys));

List<Keys> acceptableKeys = new List<Keys>();
foreach (var e in enums)
{
   int val = (int)e;
   //The boundaries represent A-Z, 0-9, F1 - F24 respectively
   if ((val >= 65 && val <= 90) || (val >= 48 && val <= 59) || (val >= 112 && val <= 135))
       acceptableKeys.Add((Keys)e);
}

これにはテンキーの数字は含まれませんが、それらも含めたい場合はそのチェックを追加できます。

于 2013-05-21T23:34:46.020 に答える