私は、どのようなコントロールが正常に動作しているかのバックカラーとフォアカラーを変更できるコンテキストメニューを用意しています。別のクラスの変数と同じ名前のクラス変数に値を代入します
private void backgroundColorToolStripMenuItem_Click(object sender, EventArgs e)
{
if (colorDialog1.ShowDialog() == DialogResult.OK)
{
contextColorOptions.SourceControl.BackColor = colorDialog1.Color;
}
}
しかし、私はまた、クラスレベルでcolorPrefsのインスタンス化の名前でこれらの色を保存するために使用されColorPreferencesクラスを持っています。
public class ColorPreferences
{
public Color btnTestBack { get; set; }
public Color betnTestFore { get; set; }
}
私はbtnTestをを右クリックできるようにしたいし、それが変数ColorPreferencesに選択した色を割り当てる必要があります
この
private void backgroundColorToolStripMenuItem_Click(object sender, EventArgs e)
{
if (colorDialog1.ShowDialog() == DialogResult.OK)
{
contextColorOptions.SourceControl.BackColor = colorDialog1.Color;
colorPrefs.(source control object)Back = colorDialog1.Color;
//the above line does not work and is a concept idea of what i want to achieve.
}
}
質問のようなもの:どのように私は、ソースを使用することができますコンテキストメニューをコントロールして、ColorPreferencesクラスの同じ変数を指すようにします。 たとえば、右クリックされたオブジェクトはbtnTestです。私は自分の背景色の変更メソッドを使用しました。選択した色をcolorPrefs.btnTestBackに保存します。だから、名前は常に最後に追加された「前後」と同じになります。
それ以外の場合、私は100個のif文を実行し、これらのコントロール名を追加、削除、編集することは、間違いを起こすことは避けられません。
私はmsdn、スタックオーバーフローおよびその他のコードフォーラムの領域を見ているが、役に立たない。 ありがとうございます。
そして、あなたの質問は何ですか? 1回の操作ですべてのコントロールの色を変更しようとしていますか? –
.net SystemColorsクラスを見ることができます。最も基本的なアプローチは、より高度なテクニックのためにColorPreferencesに静的なプロパティを作成して、依存性注入を調べることです。 – Wouter
実際にあなたの質問に応じて、clickイベントをすべてシングラーハンドラに移動させると、実際には 'object sender'変数が表示されます。そして、はい、複数のクラスにわたって1つの変数名を使用できます。私はその変数名が常に存在するInterfaceを提案します。 – zzxyz