我已经创建了一个从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;
}
}
}
这是一个正确的方法吗?简单地说:我希望控件始终停靠在顶部(因为它是标题:))
答案 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%的方法来阻止这种情况。