更改WinForm控件的字体

时间:2011-03-14 12:13:08

标签: c# winforms fonts

我有一个主要表格。单击工具 - >我的应用程序菜单中的选项我正在显示另一个表单(OptionsForm),其中包含更改控件使用的字体的选项。我将所选字体存储在属性:设置:默认值:some_object。我也可以检索它并更新我的控件,但只能点击我的MainForm上的按钮。

我尝试通过实例化MainForm来更新控件,从OptionsForm调用在MainForm上编写的函数.Font - >不工作。

如何确保每当我更改属性中的字体:设置:默认:some_object时,所有控件都会反映更改?

谢谢, 开发

2 个答案:

答案 0 :(得分:2)

根据我的理解,你想在Form Load中为Form中的所有控件设置一个Font。

试试这段代码。

Form1 -

Form2 frm2 = new Form2();
frm2.ShowDialog(this);

在Form2-按钮中单击

Properties.Settings.Default.MyFont = this.Font;
            Properties.Settings.Default.Save();
            (from Control ctrl in this.Owner.Controls
             select ctrl).ToList().ForEach(ctrl => ctrl.Font = Properties.Settings.Default.MyFont);

此代码将在Form中找到所有控件并指定Font。

答案 1 :(得分:2)

  1. 找到并展开控件的“(ApplicationSettings)”属性,该控件的字体应受属性网格中此设置的影响。
  2. 单击“(PropertyBinding)”子属性旁边的“...”按钮。
  3. 在弹出窗口中,从字体属性的下拉框中选择“新建”。
  4. 在“名称”字段中输入“UserFont”之类的名称。
  5. 对于其字体应受影响的每个控件重复步骤1到4,除了选择之前创建的相同设置,而不是在步骤3中选择“新建”。
  6. 在选项对话框中,确保将某些控件绑定到同一设置,并在更改应用程序的字体时更新该控件的字体。例如:

  7. private void button1_Click(object sender, EventArgs e)
    {
        if (DialogResult.OK == fontDialog1.ShowDialog(this))
        {
            button1.Font = fontDialog1.Font;
        }
    }
    

    这一行可能会影响应用程序中每个控件的字体,因为它们现在都绑定到同一个应用程序设置。非常方便。

    修改 或者您可以使用以下代码直接更新设置(而不是更新绑定到它的控件之一):

    WindowsFormsApplication1.Properties.Settings.Default.UserFont = fontDialog1.Font;