C# UserControl并使Dock属性为只读-这是正确的方法吗?

C# UserControl并使Dock属性为只读-这是正确的方法吗?,c#,visual-studio-2010,user-controls,C#,Visual Studio 2010,User Controls,我已经创建了一个从UserControl派生的自己的控件,我想将Dock属性设置为只读,通过尝试和错误,我得到了如下内容: public partial class Header : UserControl { public Header() { InitializeComponent(); base.Dock = DockStyle.Top; } /// <summary> /// Gets the Dock

我已经创建了一个从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;
        }
    }
}
public部分类头:UserControl
{
公共标头()
{
初始化组件();
base.Dock=DockStyle.Top;
}
/// 
///获取控件的DockStyle
/// 
[可浏览(错误)]
[只读(正确)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
公共新码头式码头
{
得到
{
返回基地。码头;
}
专用设备
{
base.Dock=DockStyle.Top;
}
}
}

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

删除设置块,所有内容都应按需要工作:

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

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

private set
{
    base.Dock = value;
}
但是请注意,Header类的用户仍然可以将其强制转换为
UserControl
,从而设置
Dock
属性。
没有100%的方法可以防止这种情况。

我知道通过代码创建控件是可以设置的,但在visual studio中通过拖放创建控件时,它可以正常工作。