13

这不是关于如何更改字体大小的问题。相反,为什么我的字体大小在我键入(或粘贴)时会自行改变,因为它位于一个普通TextBox控件中,正如您应该知道的那样,在任何给定时间只支持一种颜色、一种字体和一种字体大小。

我的代码:

using(FontDialog d = new FontDialog())
{
   // The usual properties...
   if(d.ShowDialog() == DialogResult.OK)
   {
      textbox1.Font = d.Font;
   }
}

字体设置为 8pt。如果我将纯文本粘贴到其中,顶行将是 9 到 10pt,而底行明显更小(约 8 pt)。

我选择哪种字体、字体样式或字体大小并不重要;这一直在发生!

在此处输入图像描述

更新

感谢您迄今为止的所有帮助。在下面回答您最近的问题:

我的应用程序面向 .NET 4.5。

代码中没有混淆,因为我能够在一个新的 Windows 窗体项目中重现这个问题,只有一个窗体、一个文本框和一个调用 FontDialog 的按钮。

要回答有关我的视频驱动程序的问题,我确实需要支持我几周前购买的应用程序,他们告诉我运行 DXDiag,他们回复我说我的视频卡驱动程序已过期,但我没有认为这是因为我总是每隔几个月检查一次。然后我去了制造商的网站,它说我已经为我的系统安装了最新的驱动程序。

Windows Update 还表示没有新的可用更新。不过,我会再次检查新版本的驱动程序。


我还在一个新的空白项目中进行了测试,在该项目中我在调用 FontDialog.ShowDialog()之前显示了 TextBox 使用的字体,在它显示之后以及在设置了新字体并且一切都匹配之后 - 但仍然存在更改文本框中的字体/字体大小后的问题。

4

1 回答 1

3

我怀疑您使用的高 DPI 屏幕没有使用 96 DPI 的精确倍数。在这种情况下,Windows 会将您的应用程序呈现到 96 DPI 的虚拟屏幕,然后将结果重新调整为新的 DPI。当应用程序的显示重新缩放时,如果 DPI 不是 96 的精确倍数,可能会导致舍入错误,从而导致字体看起来不均匀。

尝试将您的 DPI 设置为 Microsoft编写高 DPI Win32 应用程序指南附录 C中的大小之一。

于 2013-06-05T09:46:56.460 回答