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