我正在寻找一种方法让一些控件在设计时具有Anchor = Top,Bottom,Left,Right,这样当我缩放父窗体时它们就会改变。但是在父窗体缩放时不会在运行时执行此操作。有没有办法让Winforms控件的属性在设计时有不同的表现(在VS设计器中)?
有没有这样的事情?
我正在寻找一种方法让一些控件在设计时具有Anchor = Top,Bottom,Left,Right,这样当我缩放父窗体时它们就会改变。但是在父窗体缩放时不会在运行时执行此操作。有没有办法让Winforms控件的属性在设计时有不同的表现(在VS设计器中)?
有没有这样的事情?
您可以使用DesignMode
属性来检测控件是否当前处于设计模式。这样,您应该能够在Anchor
属性(以及其他属性)中设置适当的值,以便在设计模式和非设计模式下按照您的需要进行操作。
您可以很容易地移除这些锚点,并在负载上触发事件。
这种采样控制工程这样的:
using System;
using System.Drawing;
using System.ComponentModel;
using System.Windows.Forms;
internal class SampleControl : Control {
public SampleControl() {
this.BackColor = Color.Yellow;
}
protected override void OnHandleCreated(EventArgs e) {
base.OnHandleCreated(e);
if (this.DesignMode) this.Anchor = AnchorStyles.Bottom | AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public override AnchorStyles Anchor {
get { return base.Anchor; }
set { base.Anchor = value; }
}
}
嗨nobugz,还没有看到你很长一段时间,因为MSDN。 – 2009-11-25 20:57:36