Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.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#_.net_Winforms - Fatal编程技术网

C# 窗体控件在安装到另一台计算机上时被替换

C# 窗体控件在安装到另一台计算机上时被替换,c#,.net,winforms,C#,.net,Winforms,我知道会有人投票否决这个问题或要求结束辩论。但是,如果有任何类型的信息或代码,我可以提供给你,让你了解更多关于我的程序,我会让你知道。所以请继续阅读,看看你是否有类似的问题 我正在使用.Net Framework 4.5版运行一个Win764位 我已经创建了一个Winform应用程序。为了创建我的表单元素,我利用了一个名为的库,它为程序提供了metro的外观和感觉。它包含一些标准控件以及从原始表单继承的用户控件。这是我节目的开场白 然而,出于某种奇怪的原因,当我在另外两台计算机(一台运行Win

我知道会有人投票否决这个问题或要求结束辩论。但是,如果有任何类型的信息或代码,我可以提供给你,让你了解更多关于我的程序,我会让你知道。所以请继续阅读,看看你是否有类似的问题

我正在使用.Net Framework 4.5版运行一个
Win7
64位

我已经创建了一个
Winform
应用程序。为了创建我的表单元素,我利用了一个名为的库,它为程序提供了metro的外观和感觉。它包含一些标准控件以及从原始
表单继承的用户控件。这是我节目的开场白

然而,出于某种奇怪的原因,当我在另外两台计算机(一台运行
Win7
,另一台运行
Win8
)上安装我的程序时,我注意到我的一些表单元素已经改变了位置,有些已经消失或被替换。这让我害怕,因为我知道我花了多少时间来把这些元素放在适当的位置

无论是在开发环境中还是在发布版本中构建应用程序之后,在我自己的计算机上,一切都看起来很好。起初我认为这是另外两台设备的屏幕分辨率问题,但事实并非如此。即使是这样,为什么会发生这种情况


谁能帮我解决这个问题?我将分享你需要的我的代码的任何部分。但我真的不知道这个问题的根源在哪里

对不同机器上布局变化的主要影响是
Form.AutoScaleMode
属性

理论上,默认设置应该可以正常工作,但我发现有时最好完全关闭它,即从
Dpi
Font
None

稍微解释一下预期效果

顺便说一句:也是一个
ContainerControl.AutoScaleMode
属性,因此您可以为表单的某些部分选择不同的模式,如下所述:

AutoScaleMode属性指定当前的自动缩放 此控件的模式。如果你想拥有一个新的字体,按字体缩放是很有用的 根据字体大小控制或形成拉伸或收缩 在操作系统中,应使用绝对大小的 控件或窗体不重要。使用Dpi进行缩放时非常有用 要相对于屏幕调整控件或窗体的大小。例如 您可能希望在控件上使用每英寸点数(DPI)缩放 显示图表或其他图形,使其始终占据 屏幕的特定百分比

要保持像素精确布局的真实性,请使用:

this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
AutoScaleMode
枚举中的最后一个值是
Inherited
,嵌套容器通常会选择该值

更新:集装箱控制的选择非常有限:

System.Windows.Forms.Form
System.Windows.Forms.PropertyGrid
System.Windows.Forms.SplitContainer
System.Windows.Forms.ToolStripContainer
System.Windows.Forms.ToolStripPanel
System.Windows.Forms.UpDownBase
System.Windows.Forms.UserControl

也许最有用的是
UserControl
。请注意,它不会在其实例中公开
自动缩放
属性,而只在类定义中公开。还请注意,您不能将控件添加到desiger中的实例中,但您可以将它们组合到
面板中,然后将
用户控件设置为面板的父控件。。无论如何,您都需要留出一些额外的空间。

是否已选中Form.AutoScaleMode?有时,从Dpi或Font变为None会有帮助。@TaW我将测试并返回给您。@TaW您的答案是正确的。如果你愿意,你可以把它作为正确答案贴出来。非常感谢你!