Цвет фона формы в зависимости от переключателя
Я работал над тем, чтобы моя форма немедленно меняла цвет фона в зависимости от выбора, который выбирает пользователь. Он может выбирать между красным, зеленым и синим. Я пытался использовать system.drawing.color, но я не могу заставить форму изменить ее цвет. Предполагается использовать делегатов.
Я только учусь о немодальных диалоговых окнах. Помогите, пожалуйста...
Пока это то, что я сделал:
public partial class ChangeColors : Form
{
//Delegate the observer needs to notify if something changes
public delegate void ChangeColorEvent(Color nameColor);
// Name of the event which is tied to the delegate
public event ChangeColorEvent ChangeColor;
public enum color { Red, Green, Blue };
private color selectedColor;
public color SelectedColor
{
get
{
return selectedColor;
}
set
{
selectedColor = value;
}
}
public ChangeColors()
{
InitializeComponent();
selectedColor = color.Blue;
}
private void backColor_ColorChanged(Control control)
{
if (redRadioButton.Checked)
this.BackColor = System.Drawing.Color.Red;
else if (blueRadioButton.Checked)
this.BackColor = System.Drawing.Color.Blue;
else
this.BackColor = System.Drawing.Color.Green;
}
private void okButton_Click(object sender, EventArgs e)
{
this.Close();
}
}
1 ответ
Я не знаю, как это сделать с Delgete, но с событиями это код:
public partial class Form1 : Form
{
private void backColor_ColorChanged(object sender, EventArgs e)
{
if (redRadioButton.Checked)
this.BackColor = System.Drawing.Color.Red;
else if (blueRadioButton.Checked)
this.BackColor = System.Drawing.Color.Blue;
else if (greenRadioButton.Checked)
this.BackColor = System.Drawing.Color.Green;
}
public Form1()
{
InitializeComponent();
redRadioButton.CheckedChanged += new EventHandler(backColor_ColorChanged);
blueRadioButton.CheckedChanged += new EventHandler(backColor_ColorChanged);
greenRadioButton.CheckedChanged += new EventHandler(backColor_ColorChanged);
}
}