当我使用以下代码更改整个表单的字体时:
this.Font = new Font("Gravity", 12, FontStyle.Bold);
然后我的所有PictureBoxes(大小为16x16)也越来越大。
有办法阻止这个吗?
答案 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++;
}
}
}