Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 动态更改标签字体大小,不在屏幕上更新_C# - Fatal编程技术网

C# 动态更改标签字体大小,不在屏幕上更新

C# 动态更改标签字体大小,不在屏幕上更新,c#,C#,我试图根据屏幕分辨率更改标签字体大小。在加载表单、显示表单以及表单构造函数时尝试过,但屏幕上的字体大小与设计时相同 Rectangle resolution = Screen.PrimaryScreen.Bounds; if (resolution.Width == 1024 && resolution.Height == 768) { this.labelEnterRegistration.Font = new Font(this.labelEnterRegistrati

我试图根据屏幕分辨率更改标签字体大小。在加载表单、显示表单以及表单构造函数时尝试过,但屏幕上的字体大小与设计时相同

Rectangle resolution = Screen.PrimaryScreen.Bounds;
if (resolution.Width == 1024 && resolution.Height == 768)
{
   this.labelEnterRegistration.Font = new Font(this.labelEnterRegistration.Font.FontFamily, 40f);
}
我在标签上添加了一个双击事件来检查字体大小,它在消息框中显示为40(
MessageBox.Show(this.labeleinterregistration.font.ToString());
),那么为什么表单显示没有反映这一点呢


我试过标签
Invalidate()
,但也没用。

已经修复了它。正如在设置字体大小之前所做的那样,我执行了以下操作,以便更改像素大小:

FontStyle style = this.labelEnterRegistration.Font.Style;
this.labelEnterRegistration.Font = new Font(this.labelEnterRegistration.Font.FontFamily, 40f, style, GraphicsUnit.Pixe
现在也保持相同的字体样式


感谢@HEPİMİZYARBAYMEHMETALKANIZ的评论,这让我想了很久。

试试lblName.Font=新字体(“Arial”,mainForm.lblName.Font.Size);谢谢,但这不会把尺寸设置为原来的尺寸吗?我需要保持相同的字体,但只需更改其大小How@rodkort您可以轻松地将其更改为所需的值。font.Size:)我已经这样做了:)。在设计它的50,在代码我改为40,但仍然显示标签在50!好像表单没有刷新它自己50/40==125%。与视频DPI设置完全匹配的值。所以你确实把字体大小调整到了40点,但是后来又调整了125%,看起来又是50点了。哇,这是一个非常不走运的选择:)虽然可能不是一个意外,但DPI永远的扩展让Winforms程序员难堪。你应该通过40/1.25=32f。但千万不要这样做,因为它在另一台具有不同DPI设置的机器上是不正确的。只需确保您的设计能够正确缩放,这样您就根本不需要这种攻击。