C# UserControl并使Dock属性为只读-这是正确的方法吗?
我已经创建了一个从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
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中通过拖放创建控件时,它可以正常工作。