我有一个.NET(特别是C#)控件,它是RadioButton的子类,并且有一个额外的属性来向它添加第二个文本字符串。事实上,财产所做的事情并不重要 - 重要的是它应该改变控制的外观。
在设计视图中更改此属性并按Enter键时,窗体设计器上的控件不会更改。如果我更改了RadioButton中已存在的属性,则控件将使用新文本重新绘制自身。我认为这可能是通过IDesigner类型或属性实现的,但我无法找到它。
如何在更改添加的属性时重新控制控件?
答案 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();
让您的控件重绘。