0

我创建了一个从 UserControl 派生的自己的控件,我想让 Dock 属性成为只读的,并且通过试验和错误,我得到了这样的东西:

public partial class Header : UserControl
{
    public Header()
    {
        InitializeComponent();
        base.Dock = DockStyle.Top;
    }

    /// <summary>
    /// Gets the DockStyle of the control
    /// </summary>
    [Browsable(false)]
    [ReadOnly(true)]
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
    public new DockStyle Dock
    {
        get
        {
            return base.Dock;
        }
        private set
        {
            base.Dock = DockStyle.Top;
        }
    }
}

这是正确的方法吗?简单地说:我希望控件始终停靠在顶部(因为它是标题 :))

4

2 回答 2

0

删除 set 块,一切都应该按预期工作:

public new DockStyle Dock
    {
        get
        {
            return base.Dock;
        }
    }
于 2013-04-11T08:33:40.010 回答
0

private set您没有很好地实现,因为它设置为base.Dock硬编码值而不是给定值。要么完全删除它,要么制作它

private set
{
    base.Dock = value;
}

但是请注意,您的 Header 类的用户仍然可以将其转换为UserControl并设置Dock属性。没有 100% 的方法可以防止这种情况发生。

于 2013-04-11T08:37:52.420 回答