c# - 为什么在 Plain TextBox 中显示多种字体大小?

标签 c# .net winforms .net-4.5

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

我的代码:

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

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

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

enter image description here

更新

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

我的应用以 .NET 4.5 为目标平台。

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

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

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


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

最佳答案

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

尝试将 DPI 设置为 Appendix C 中的其中一种尺寸微软的 Writing High-DPI Win32 Applications指导。

关于c# - 为什么在 Plain TextBox 中显示多种字体大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16820413/

相关文章:

c# - 这些构造函数中的虚拟成员调用警告是否合法?

c# - Asp.net MVC 绑定(bind)到 View 模型

c# - 我如何/可以使用 linq to xml 以合理的内存消耗查询巨大的 xml 文件?

.net - 日志中的 BinarySecurityToken

c# - 尝试将密码存储到数据库

c# - 知道 DLL 在什么上下文中运行

c# - 在 MouseDown 事件处理程序中检测 Ctrl+Left(鼠标按钮)

c# - 无法通过 JSON-RPC 将 CREATEAWTRANSACTION 发布到比特币核心

c# - 使用 CaSTLe ActiveRecord 类表继承在派生类上调用 FindAll

C# listview 可点击的列和行