如何更改继承控件中的默认值,同时允许使用实例的设计器重置它们的值

本文关键字:实例 许使用 控件 继承 何更改 默认值 | 更新日期: 2023-09-27 17:50:40

考虑以下场景:

  1. 创建新的自定义控件继承自DataGridView命名为MyDataGridView
  2. 打开MyDataGridView设计器
  3. 更改MyDataGridView自定义控件的AllowUserToAddRows属性为false
  4. 使用MyDataGridView实例的形式
  5. MyDataGridView实例的AllowUserToAddRows属性更改为true

我期望发生的是:我的实例应该允许用户添加行。它不是。当我运行build时,实例的属性被重置为MyDataGridView定义中设置的值。

所以我显然做错了。怎样才能做对呢?

我希望MyDataGridView有一组不同于标准DataGridView的属性默认值,但这些属性应该在应用程序的设计器中保持可编辑。实现这一目标最直接的方法是什么?

示例

如何更改继承控件中的默认值,同时允许使用实例的设计器重置它们的值

好吧,有一种方法可以做到这一点,但它很糟糕!我还在寻找一个更简单的方法:

using System.ComponentModel;
using System.Windows.Forms;
namespace Test {
    public partial class MyDataGridView : DataGridView {
        bool _AllowUserToAddRows;
        [Category("Behavior")]
        [Description("Value indicating whether the option to add rows is displayed to the user")]
        [DefaultValue(false)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
        public new bool AllowUserToAddRows {
            get { return _AllowUserToAddRows; }
            set { base.AllowUserToAddRows = _AllowUserToAddRows = value; } }
    }
}