Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/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# 使标签控件文本看起来与VS窗体设计器中的一样好_C#_Visual Studio 2008_Fonts_Textbox - Fatal编程技术网

C# 使标签控件文本看起来与VS窗体设计器中的一样好

C# 使标签控件文本看起来与VS窗体设计器中的一样好,c#,visual-studio-2008,fonts,textbox,C#,Visual Studio 2008,Fonts,Textbox,在VS2008中,我为C#dll设计了一个表单。dll是一个稍旧的应用程序的插件(约2005年):让我们称它为“OldApp”。在VS form designer中,表单上标签控件中的文本被很好地呈现:抗锯齿和正确的字距。但是当我在OldApp中打开这个表单时(C#dll作为插件运行),Label控件中的文本看起来很难看。它清晰可辨,但字距很差:字母之间的间距更大,而且看起来偏移量很随机。我能做些什么使OldApp中的文本标签看起来和VS的表单设计器中的一样好?我怀疑具体的字体是否重要,但它是A

在VS2008中,我为C#dll设计了一个表单。dll是一个稍旧的应用程序的插件(约2005年):让我们称它为“OldApp”。在VS form designer中,表单上标签控件中的文本被很好地呈现:抗锯齿和正确的字距。但是当我在OldApp中打开这个表单时(C#dll作为插件运行),Label控件中的文本看起来很难看。它清晰可辨,但字距很差:字母之间的间距更大,而且看起来偏移量很随机。我能做些什么使OldApp中的文本标签看起来和VS的表单设计器中的一样好?我怀疑具体的字体是否重要,但它是Arial,7.2 pt(VS2008默认)。我试着在Program.cs(见下文)中使用两个相关的行,但没有效果

Application.EnableVisualStyles(); // tried using it and commenting it out
Application.SetCompatibleTextRenderingDefault(true); // tried true and false

我在MSDN论坛上发现了一个类似的问题,其中提到在EnableVisualStyles()方法之后添加以下行


在较旧的.NET版本中似乎有一个bug…您使用的是哪个版本?

经过调查,我有一些发现,所以我只回答我自己的问题:

  • 坏消息是:OldApp使用的旧式文本呈现是造成问题的原因。我通过在VS中切换label控件的UseCompatibleTextRendering属性来验证它。我看到的字体失真与我在OldApp中看到的相同。这意味着我的代码中的Application.SetCompatibleTextRenderingDefault(false)行没有任何效果。OldApp将忽略它,并无论如何执行旧式渲染

  • 正如DeviceSeev所建议的那样,使用更大的字体会有所帮助。它并没有消除坏的字距,只是让它变得不那么引人注目。我将字体从7.2pt增加到了8pt(不是12pt),因为否则对话框会变得太大。执行此操作的方法是在表单的字体属性(而不是控件的)中。这样,您将统一更改所有控件(如果其字体属性设置为默认值)

  • VS中的字体大小似乎是离散的,而不是连续的,或者可能涉及到int()舍入。将字体从7.2pt增加到7.4pt的结果变化很小,而在7.5pt时,字体的大小会突然增加

  • 表单具有自动缩放模式的属性。如果设置为字体,并且表单可调整大小,则表单将根据字体大小的变化按比例调整大小。这样,在VS中,您可以在(清晰的)字体大小和臃肿的对话框之间找到一个可接受的中间地带。但是,要小心:自动缩放操作可能会突然出错,例如,如果您将字体单位从点更改为像素、英寸等。您可能会突然使用显微控件或比屏幕大的表单,并且点击“撤消”无法修复它。您真的不想再次重新设计表单,所以请在更改任何字体单位之前将其保存,然后在对所看到的内容满意时再次保存


  • 您是否在与Visual Studio相同的计算机上执行旧应用程序?我询问的原因是,应用程序的格式可能取决于操作系统。Windows 7上运行的某些内容在Windows XP计算机上可能看起来有所不同。您是否尝试增大字体大小?尝试将其设置为12pt,看看您是否仍然遇到此问题。尝试过,但没有任何区别。
    Application.DoEvents()