c#pictureBox用字体改变大小

时间:2018-04-23 17:20:22

标签: c# winforms picturebox

当我使用以下代码更改整个表单的字体时:

this.Font = new Font("Gravity", 12, FontStyle.Bold);

然后我的所有PictureBoxes(大小为16x16)也越来越大。

有办法阻止这个吗?

1 个答案:

答案 0 :(得分:0)

如果您坚持要更改表单的字体,请使用

Control.OnFontChanged Method (EventArgs)

每次更改表单的字体时都会执行此方法,因此在执行时,您可以指定PictureBox(全部)将保留您定义的字体。

如果您的所有PictureBox都具有相同的字体:

public class Form1 : Form
{
    private void Form1_Load(object sender, EventArgs e)
    {

    }

    protected override OnFontChanged(EventArgs e)
    {
        foreach(Control control in this.Controls)
        {
            if(control is PictureBox)
            {
               control.Font = new Font(<Your constant defined font>);;
            }
        }
    }
}

现在,假设您的图片框有不同的字体。

您可以将源存储在列表中(或者也可以存储在数组中),每次更改表单源时,只需将之前存储的源调用为每个PictureBox重新分配:

public class Form1 : Form
{
    private List<Font> PBFonts = new List<Font>();

    private void Form1_Load(object sender, EventArgs e)
    {
        foreach(Control control in this.Controls)
        {
           if(control is PictureBox)
           {
               this.PBFonts.Add(control.Font);
           }
        }
    }

    protected override OnFontChanged(EventArgs e)
    {
        int index = 0;
        foreach(Control control in this.Controls)
        {
           if(control is PictureBox picture)
           {
               picture.Font = this.PBFonts[index];
           }
           index++;
        }
    }
}