1 回答
TA贡献1893条经验 获得超10个赞
出于某种原因,ControlDesigner将 中的Size属性替换PreFilterProperties为ShouldSerializeValue始终返回的自定义属性描述符true。这意味着该Size属性将始终被序列化,除非您使用隐藏为值的设计器序列化可见性属性来装饰它。
您可以通过恢复原始属性描述符来更改行为:
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.Design;
[Designer(typeof(MyButtonDesigner))]
public class MyButton : Button
{
protected override Size DefaultSize
{
get { return new Size(100, 100); }
}
//Optional, just to enable Reset context menu item
void ResetSize()
{
Size = DefaultSize;
}
}
public class MyButtonDesigner : ControlDesigner
{
protected override void PreFilterProperties(IDictionary properties)
{
var s = properties["Size"];
base.PreFilterProperties(properties);
properties["Size"] = s;
}
}
- 1 回答
- 0 关注
- 204 浏览
添加回答
举报