更改属性时在设计时重新绘制控件

时间:2012-08-01 13:09:49

标签: .net

我有一个.NET(特别是C#)控件,它是RadioButton的子类,并且有一个额外的属性来向它添加第二个文本字符串。事实上,财产所做的事情并不重要 - 重要的是它应该改变控制的外观。

在设计视图中更改此属性并按Enter键时,窗体设计器上的控件不会更改。如果我更改了RadioButton中已存在的属性,则控件将使用新文本重新绘制自身。我认为这可能是通过IDesigner类型或属性实现的,但我无法找到它。

如何在更改添加的属性时重新控制控件?

2 个答案:

答案 0 :(得分:2)

可能大多数人都不会阅读这些评论,所以我会将其作为答案发布。

让我用一个非常简单的例子解释一下:

public override Color ForeColor
{
    get { ... }
    set
    {
        if (_foreColor == value) return;
        _foreColor = value;

        // Force redraw to show new color in designer instantly
        if (DesignMode)
            Invalidate();
    }
}

Invalidate请求重绘。

DesignMode返回在设计器模式下是否执行此代码。因此if语句之后的代码将从不为用户运行。

检查DesignMode可选,但它会保持代码干净,并且不会在运行时导致冗余方法调用。

答案 1 :(得分:0)

尝试

someGUIControl.Invalidate();

让您的控件重绘。