UserControl并使Dock属性ReadOnly - 这是一种正确的方法吗?

时间:2013-04-11 08:31:02

标签: c# visual-studio-2010 user-controls

我已经创建了一个从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;
        }
    }
}

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

2 个答案:

答案 0 :(得分:0)

删除set block,一切都应该按照需要运行:

public new DockStyle Dock
    {
        get
        {
            return base.Dock;
        }
    }

答案 1 :(得分:0)

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

private set
{
    base.Dock = value;
}

但请注意,Header类的用户仍然可以将其强制转换为UserControl,从而设置Dock属性。 没有100%的方法来阻止这种情况。