有没有办法让Winforms控件的属性在设计时表现不同(在VS设计器中)?

时间:2009-11-24 22:29:45

标签: c# .net winforms

我正在寻找一种方法让一些控件在设计时具有Anchor = Top,Bottom,Left,Right,这样当我缩放父窗体时它们会改变。但是,在缩放父窗体时,不会在运行时执行此操作。

有类似的东西吗?

3 个答案:

答案 0 :(得分:3)

您可以使用DesignMode属性来检测控件当前是否处于设计模式。这样您就可以在Anchor属性(以及其他属性)中设置适当的值,以便在设计和非设计模式下按照您的意愿运行。

答案 1 :(得分:2)

您可以轻松地删除那些在加载时触发的事件的锚点。

答案 2 :(得分:1)

此示例控件的工作原理如下:

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; }
    }
}