【发布时间】:2012-10-10 09:40:10
【问题描述】:
我创建了一个自定义 UserControl,然后创建了另一个作为此 UserControl 子类的控件,但它背后仍然有自己的设计器文件(基本控件仅用于某些基本功能......我不需要'design' 上面的任何东西,实际上它的高度设置为 0)。
在运行时一切都按预期工作,但在设计时,似乎每当我在设计模式下打开子控件来处理它时,Visual Studio 都会不断增加我身上的宽度,大约几百像素时间(或可能是某些因素)。在我知道之前,这个东西是 10,000 多像素宽,然后我必须在设计器中重新设置宽度,以便它易于管理。这在运行时不是问题,因为控件的宽度由它所在的父容器设置,并且控件锚定到父容器。只是在设计控件时很痛苦。这里只是一些小 sn-ps 来更好地解释我所做的事情:
public partial class BaseRow : UserControl
{
public BaseRow()
{
InitializeComponent();
...
}
}
然后我想实际创建从该 BaseRow 继承的控件,但我可以在设计器中进行编辑。所以,我去添加 - > UserControl。然后在类代码中,我将默认创建的代码更改为从我的 BaseRow(继承自 UserControl)继承,所以它看起来像这样:
// changed the inheritance below from UserControl to BaseRow (which inherits from UserControl)
public partial class UnitRow : BaseRow
{
public UnitRow()
{
InitializeComponent();
}
}
我最初在设计器中的基类和子类中都将对象的宽度设置为 400。基 Row 在其构造函数中设置其 Anchor 属性:
this.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
因为这些控件都将进入一个子类面板控件,该控件将控制添加到其中的行的宽度。
在运行时一切正常。我创建的这些“行”控件的实际宽度设置正确,并根据其父子类面板控件进行适当更改。但是当我在设计时以设计模式打开行控件时,宽度不断变长。每次宽度等于或大于 10,000 时,我都会在“属性”窗口中手动将其更改回 400 的宽度。
它不会引起任何重大问题。但这是一种真正的痛苦。有人有什么建议吗?
【问题讨论】:
-
是向右锚定的副作用。使用 DesignMode 属性避免面板在设计时更改行宽。
-
先生。 Passant 这是一种荣誉。感谢您为我指明正确的方向。
标签: c# winforms visual-studio-2010 user-controls windows-forms-designer