C#程序在运行期间,如何动态改变界面的字体大小?目前需要做到两种方式的动态改变:第一种:程序在运行期间,用户通过选择程序菜单栏里的字体设置选项进行字体设置,可是在选择之后,该如何重绘整个界面(包括窗体的、菜单的、各个控件的)字体呢?通过什么事件触发?第二种:程序在运行期间,用户通过自己设置windows系统本身的字体大小(或更改大字体、超大字体或更改DPI的方式),那么程序又如何做到适应这种字体变化,自行改变界面字体的大小呢?在网上没有找到什么好的解决办法,期待大家的解答!
调试欢乐多
{
get
{
return base.Font;
}
set
{
foreach (Control var in base.Controls )
{
SetControlFont(var , value);
}
base.Font = value;
}
}
private void SetControlFont(Control c, Font f)
{
c.Font = f;
if (c.Controls.Count > 0)
{
foreach (Control var in c.Controls)
{
SetControlFont(var, f); }
}
} private void button2_Click(object sender, EventArgs e)
{
this.Font = new Font("黑体", 20);
}
第二种:设置windows的字体后 应用程序的字体不是自动改变了吗?
第一种解决办法,通过this.Font的确可以,非常感谢。
但是第二种,设置windows的字体后,应用程序的字体不是自动改变的。比如你将DPI从96改为120(或者在【外观】中将字体大小改为【特大字体】),应用程序只是标题栏变大了,其他的都不变。
改变字体时
this.Invalidate();第二个方法是系统自动的不用管
就像一个放大镜一样!!可以把字体变大!!
忘了叫什么了!!
不能简单new一下的,如果此时用户是在处理业务的时候,你new一下,当前正在处理的数据岂不是丢失了?
第二种情况,的确只是窗口标题变大而已...里面的控件什么的字体都没有改变啊。你可以试试,改变windows的DPI到120
UserControl或者Form是不是有什么方式屏蔽DPI改变对系统界面造成的影响。