UI设计器覆盖我自己的继承控件的属性

本文关键字:继承 控件 属性 自己的 我自己 覆盖 UI | 更新日期: 2023-09-27 17:57:33

我通过继承System.Windows.Forms.TableLayoutPanel创建了自己的控件。我需要将行和列的数量固定为1。

public class KTextPanel : TableLayoutPanel
{
    public KTextPanel()
    {
        ColumnCount = 1;
        RowCount = 1;
    }
}

所以我在新控件的构造函数中实现了它。问题是,当我在UI设计器上生成新控件的新实例时,UI设计器会自动将[blah.designer.cs]中的行数和列数改写为2。

// 
// kTextPanel8
// 
this.kTextPanel8.AANAME = "Force Pickup";
this.kTextPanel8.AANODENAME = "picker";
this.kTextPanel8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.kTextPanel8.ColumnCount = 2;
this.kTextPanel8.RowCount = 2;

它看起来2是TableLayoutPanel的默认值。如何防止UI设计器执行此自动例程?

UI设计器覆盖我自己的继承控件的属性

我认为您可以重写设计器,但在调用InitializeComponent()后在表单构造函数中设置所需的值。或者进入设计器并使用属性窗口在那里设置控件的属性,应该会更改设计器生成的内容。

使用默认值属性

像这样的东西应该起作用:

public class KTextPanel : TableLayoutPanel
{
    public KTextPanel()
    {
        ColumnCount = 1;
        RowCount = 1;
    }
    [DefaultValue(1)]
    public new int ColumnCount
    {
        get
        {
            return base.ColumnCount;
        }
        set
        {
            base.ColumnCount = value;
        }
    }
    //... same for RowCount
}