【问题标题】:Custom UserControls automatically resizes when hosted on a WinForm form自定义 UserControls 在 WinForm 窗体上托管时自动调整大小
【发布时间】:2015-01-20 13:55:56
【问题描述】:

我的 WinForm 应用程序有问题。 我正在使用选项卡控件,我在每个选项卡面板中放置了一个自定义用户控件(选项卡面板 1 包含自定义用户控件,选项卡面板 2 包含另一个,等等)。

我的自定义用户控件具有指定的大小,但是当我将自定义用户控件添加到另一个用户控件或运行应用程序时,它们比设计模式下更大...似乎托管表单缩放托管用户控件,但我不知道为什么会这样..

另一个问题是项目之间的距离已损坏。

这是一个例子:

设计模式下的三个组合(托管在托管的用户控件中):

当我运行程序或简单地添加时,同样的三个组合 我的自定义用户控件到一个窗口/窗体:

如您所见,它们更大,它们之间的距离也在变化......

这发生在大多数托管控件(但不是全部)上,没有逻辑...

会是什么?我正在优化应用程序以在指定大小的屏幕上运行,但我无法解决这些问题...

谢谢!

【问题讨论】:

  • 也许 Form_Load 上发生了一些奇怪的事情?
  • 他们的锚点是什么?
  • 在 UserControl 的 ctor 中,使用什么都不做的方法订阅控件的事件SizeChanged,在其中放置一个断点并运行。检查调用堆栈以了解发生了什么。
  • No size changed called :/ 我发现“缩放问题”也处于设计模式,当我将自定义用户控件放入另一个控件中时,而不仅仅是在运行时...

标签: c# winforms user-controls custom-controls


【解决方案1】:

回复很晚,但希望这会帮助那些遇到同样问题但找不到解决方案的人,就像我刚刚做的那样。

对我有用的是在用户控件的设计器中将AutoScaleMode 设置为InheritAutoSize 设置为 false,虽然我不知道这是否有任何影响。

【讨论】:

    【解决方案2】:

    我现在才发现另一个有同样问题的用户: Sizing issues while adding a .Net UserControl to a TabPage

    问题出在设计模式下不可见的属性上:您必须在用户控件的设计器上将属性 AutoScaleMode 更改为 None:

    this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
    

    【讨论】:

    • 我相信 AutoScalemode 仅在启用 AutoSize 时才有效。
    猜你喜欢
    • 2019-02-27
    • 2011-02-28
    • 2011-12-21
    • 2023-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-29
    相关资源
    最近更新 更多