Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.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# GUI故障:在Windows 8中显示的复选框文本不完整_C#_.net_Windows_Winforms_Dpi - Fatal编程技术网

C# GUI故障:在Windows 8中显示的复选框文本不完整

C# GUI故障:在Windows 8中显示的复选框文本不完整,c#,.net,windows,winforms,dpi,C#,.net,Windows,Winforms,Dpi,我有一个WinForms应用程序(在Win7 64x中开发),带有一个复选框控件。我已将表单的AutoScaleMode属性设置为“无”。表格在我的机器上看起来很好 但是,当我将程序发送给运行Windows 8的同事时,复选框文本似乎不完整。我不确定这个控件的什么属性导致了这个问题 我不确定这个控件的什么属性导致了这个问题 很明显,这是AutoScaleMode属性。或者,我想更准确地说,是大小属性 您同事的机器不仅有不同大小的控件,还有不同大小的文本。通过比较屏幕截图,您可以清楚地看到这一

我有一个WinForms应用程序(在Win7 64x中开发),带有一个复选框控件。我已将表单的
AutoScaleMode
属性设置为“无”。表格在我的机器上看起来很好

但是,当我将程序发送给运行Windows 8的同事时,复选框文本似乎不完整。我不确定这个控件的什么属性导致了这个问题

我不确定这个控件的什么属性导致了这个问题

很明显,这是AutoScaleMode属性。或者,我想更准确地说,是大小属性

您同事的机器不仅有不同大小的控件,还有不同大小的文本。通过比较屏幕截图,您可以清楚地看到这一点。复选框控件允许的大小太小(不够宽),无法显示整个标签,因此它会被截断,您看到的只是标签的前两个字母

解决方案相当简单:使控件的区域更大。更好的办法是通过将容器表单的AutoScaleMode属性设置为更合理的值(如文本或DPI),让这种调整自动发生。这确保了当用户的DPI或字体设置与您在计算机上的设置不同时,它不会中断


从长远来看,最好使用TableLayoutPanel或FlowLayoutPanel,结合锚点和停靠属性,使用流体布局设计表单。在designer中,这比拖放要复杂得多,但在所有环境中都能产生更好的缩放效果。

不要将
AutoScaleMode
设置为
None
-将布局改为使用不同的缩放。这一点比以往任何时候都更为重要-现在很多机器都有高DPI,您的应用程序将很难在高DPI显示器上使用。我已经尝试将
Font
DPI
作为自动缩放模式,但故障仍然存在。