我正在使用C#开发,我正在使用 lot 的用户控件创建一个框架。我遇到的问题是,当我将其复制并粘贴到设计器中时,我所拥有的每个UserControl都被调整大小(放大)。重现这是一个非常简单的场景(不需要代码示例,因为这可以从没有添加代码的空白项目中重现):
创建一个新项目。
创建一个新的UserControl1。设置BorderStyle = FixedSingle(这只是为了让事情更容易看到)。
创建新表单。将表单上的字体设置为“Tahoma 9pt”。由于这比默认字体(Ms Sans Serif 8pt)略大,因此会产生少量缩放,这是预期的(也是期望的)。
将UserControl1的实例拖到表单上。
复制并粘贴UserControl1的实例。
副本将再次缩放,使其大于原始副本。试试吧,问题对你来说很明显。
我知道为什么正在发生,但我需要找到解决方法,因为每次复制和粘贴它时我都无法重新调整每个控件的大小。我知道我可以通过将UserControl的“AutoScaleMode”属性更改为“None”来解决这个问题,但问题是如果用户的系统字体缩放设置,我想要重新调整控件大于100%。将AutoScaleMode设置为Font可以在这些情况下为我提供适当的重新调整大小,但是在设计器本身的复制和粘贴操作期间给我带来了不幸的重新缩放。
显然设计师有办法解决这个问题,因为内置控件不会遇到这个问题(尝试使用TextBox进行相同的实验,你会看到它不会在复制和粘贴时重新调整)
任何人都有很好的方法来处理这类事情吗?
编辑: 当我真的想要“AutoScaleMode”时,原本说过“AutoSizeMode”。我在原文中对此进行了更正。
答案 0 :(得分:1)
在设计用户控件时(在将其放在Form上之前),将用户控件的AutoScaleMode设置为“Inherit”。这将为用户控件提供与在表单上设置相同的缩放比例。