私はウィンドウフォームを持っており、ユーザーはブラシの色を指定して、これをネイティブで消費するようにしたいと考えています。ブラシの色がたくさんあり、すべての可能な色の組み合わせを列挙できるかどうか疑問に思っていましたか?クラスプロパティを列挙し、そのプロパティを指定する簡単な方法
次に、コンボボックスにコンボボックスを挿入できます。次に、2番目の部分は、ルックアップテーブルを使わずにプログラムでブラシプロパティを指定することです。
私はウィンドウフォームを持っており、ユーザーはブラシの色を指定して、これをネイティブで消費するようにしたいと考えています。ブラシの色がたくさんあり、すべての可能な色の組み合わせを列挙できるかどうか疑問に思っていましたか?クラスプロパティを列挙し、そのプロパティを指定する簡単な方法
次に、コンボボックスにコンボボックスを挿入できます。次に、2番目の部分は、ルックアップテーブルを使わずにプログラムでブラシプロパティを指定することです。
:ユーザーが色を選択したら、次を使用してブラシを作成することができ、その後、あなたのコンボボックス
を移入するリスト
Type colorType = typeof(System.Drawing.Color);
PropertyInfo[] propInfoList = colorType.GetProperties(BindingFlags.Static | BindingFlags.DeclaredOnly | BindingFlags.Public);
var colorNames = propInfoList.Select(c => c.Name);
使用:
var brushColor = Color.FromName(selectedColorFromCombo);
var brush = new SolidBrush(brushColor);
ベスト・オプションは、public enum BrushColor{...}
のような列挙子を宣言し、そこにすべての色をリストすることです。次に、この列挙子を使用すると、自動的にコンボボックスに入力することができ、ユーザー入力(switch
ブロック)に基づいて色を決定することも簡単になります。
あなたは、リフレクションを使用した色のリストを取得することができます。
Type brushes = typeof(Brushes);
var colorList = from color in brushes.GetProperties() select color.Name;
あなたが所望の結果を達成することができ冒頭で述べたロジックとコードのこの部分を組み合わせます。あなたがReflectionを使用することができます色の名前のリストについては
返事をありがとう、私はのDrawStringに渡すことができますので、私はちょうど変数と静的ブラシクラスにプロパティを設定する方法を考え出すことができれば、私はそれを行うことを避けるために望んでいましたクラスのプロパティを列挙して素敵なリストに入れる方法についての情報がたくさんあるようです。 – Stevie187
edtied answerを参照してください。 –
私はコンボボックスがデータソースとして受け入れるためにリストにcolorNamesのデータ型を変更しなければならなかったが、それ以外は完璧だった。ありがとう。 –
Stevie187