我有这样的BaseForm类继承了Form类

 public partial class BaseForm : Form
 {
    protected override void OnLoad(EventArgs e)
    {
       Color colBackColor =Properties.Settings.Default.FormsBackgroundColor;
       BackColor = colBackColor;
    }
  }


这样的MainForm类继承了BaseForm类。

public partial class MainForm : BaseForm
{
    private void button1_Click_1(object sender, EventArgs e)
    {
            ColorDialog colorDlg = new ColorDialog();
            if (colorDlg.ShowDialog() == DialogResult.OK)
            {
                Properties.Settings.Default.FormsBackgroundColor= colorDlg.Color;
                Properties.Settings.Default.Save();
                this.Refresh();
                this.Invalidate();
            }
        }
 }


当我单击MainForm上的button1并从颜色对话框中选择颜色时。 MainForm的背景颜色不变。我做错了什么?

顺便说一句,当我重新运行该应用程序时,颜色会改变。

最佳答案

OnLoad事件仅在加载表单时触发,单击按钮时不会触发。因此,您还需要在button1_Click_1中更改表格BackColor的形式。

if (colorDlg.ShowDialog() == DialogResult.OK)
{
    Properties.Settings.Default.FormsBackgroundColor= colorDlg.Color;
    Properties.Settings.Default.Save();
    this.BackColor = colorDlg.Color;
}

关于c# - 在Winform应用程序中更改所有表单的背景色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28614970/

10-13 22:35