2013-04-11 25 views
0

我创建了从用户控件派生的自己控制,我想使Dock属性为只读,并通过试验&错误,我想出了这样的事情:UserControl并使Dock属性ReadOnly - 这是一种正确的方式吗?

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

private set你有没有得到很好的落实,因为它将base.Dock设置为硬编码值而不是给定值。然而要么完全删除或使其

private set 
{ 
    base.Dock = value; 
} 

注意的是,你的头类的用户仍然可以将它转换为UserControl和所设定的Dock属性。 没有100%的方法来防止这种情况。

+0

我知道,通过代码创建我的控件可以设置,但通过在Visual Studio中拖放创建它时,它就可以工作。 – Dawid 2013-04-11 08:48:41

0

控制去除安装块,一切都将正常运行所需:

public new DockStyle Dock 
    { 
     get 
     { 
      return base.Dock; 
     } 
    } 
相关问题