C# 自定义控件覆盖命令按钮
我正在尝试创建一个自定义命令按钮,默认宽度和高度为特定设置。我有以下代码:C# 自定义控件覆盖命令按钮,c#,winforms,custom-controls,C#,Winforms,Custom Controls,我正在尝试创建一个自定义命令按钮,默认宽度和高度为特定设置。我有以下代码: public partial class myCommandButton : Button { public magCommandButton() { InitializeComponent(); } [DefaultValue(840)] public override int Width { get {
public partial class myCommandButton : Button
{
public magCommandButton()
{
InitializeComponent();
}
[DefaultValue(840)]
public override int Width
{
get
{
return base.Width;
}
set
{
base.Width = value;
}
}
[DefaultValue(340)]
public override int Height
{
get
{
return base.Height;
}
set
{
base.Height = value;
}
}
protected override void OnPaint(PaintEventArgs pe)
{
base.OnPaint(pe);
}
}
但是,它不会编译,因为它告诉我不能覆盖宽度或高度。有人能告诉我我是否处理得不对,或者是否有办法解决这个问题吗?宽度和高度不是虚拟成员(请检查中的控件类),因此最简单的方法是重写DefaultSize属性:
protected override Size DefaultSize
{
get
{
return new Size(840, 340);
}
}
也可以使用,但对于本例,我建议覆盖DefaultSize。如果您在Reflector中检查控件类,您将看到,该高度和宽度使用了大量内部/私有成员。所以我不认为实施所有这些东西是个好主意。
只需使用DefaultSize属性。您不必使用reflector来检查类方法/定义/修饰符等。您只需在visual studio中通过单击上下文菜单中“控件”或任何需要检查的类型上方的“转到定义”即可查看类元数据;)好。。。我不喜欢只查看元数据。我正在使用resharper+scout插件,非常棒。新的reflector有一些特性,您可以直接从代码转到这个工具并检查实现,但我认为scout更好。但是新的Resharper(V5.0)是最好的——您可以直接从VS:D观看编译的程序集源代码