0

例如,当用户更改背景颜色时,会修改 Settings.settings 文件。它有效。

但是在用户单击“确定”后,应用程序不会更改其背景颜色。它仅在我关闭并再次构建应用程序时才有效。

如何在单击按钮时重新加载表单或用户控件?(尝试使用 .Refresh(),但它不起作用)

    private void refreshSettings()
    {
        this.BackColor = Properties.Settings.Default.bgdColor;
        this.Font = Properties.Settings.Default.fontType;
        this.ForeColor = Properties.Settings.Default.fontColor;
    }

    private void Settings_Load(object sender, EventArgs e)
    {
        refreshSettings();
        bgdColorLBL.BackColor = Properties.Settings.Default.bgdColor;
        fontColorLBL.BackColor = Properties.Settings.Default.fontColor;
        fontTypeLBL.Font = Properties.Settings.Default.fontType;
        fontTypeLBL.Text = Properties.Settings.Default.fontType.Name;
    }

    private void okBTN_Click(object sender, EventArgs e)
    {
        LeagueUC lg = new LeagueUC();
        InitializeComponent();
        this.Close();
    }

    private void bgdColorLBL_Click(object sender, EventArgs e)
    {
        ColorDialog dlg = new ColorDialog();
        dlg.Color = Properties.Settings.Default.bgdColor;

        if (dlg.ShowDialog() == DialogResult.OK)
        {
            Properties.Settings.Default.bgdColor = dlg.Color;
            Properties.Settings.Default.Save();
            bgdColorLBL.BackColor = dlg.Color;
        }
    }
4

4 回答 4

1

在启动时从设置文件运行设置控件属性的任何代码。

例如

    private void bgdColorLBL_Click(object sender, EventArgs e) 
{ 
    ColorDialog dlg = new ColorDialog(); 
    dlg.Color = Properties.Settings.Default.bgdColor; 

    if (dlg.ShowDialog() == DialogResult.OK) 
    { 
        Properties.Settings.Default.bgdColor = dlg.Color; 
        Properties.Settings.Default.Save(); 

        Settings_Load(null, null);
    } 
} 
于 2012-09-10T13:06:35.793 回答
0

在按钮单击事件上,只需从设置文件中加载背景色。就像是:

this.BackColor = Properties.Settings.Default.Color;
于 2012-09-10T13:10:25.477 回答
0

您可以为其创建绑定。通过一些小技巧,绑定甚至可以允许即时界面语言切换。

于 2012-09-10T13:18:20.070 回答
0

试试这个,这会以您从 ColorDialog 中选择的颜色更改表单的背景颜色:

    private void button2_Click(object sender, EventArgs e)
    {
        ColorDialog dlg = new ColorDialog();

        if (dlg.ShowDialog() == DialogResult.OK)
        {
            this.BackColor = System.Drawing.Color.FromName(dlg.Color.Name);
        }
    }
于 2012-09-10T14:00:54.067 回答