2012-08-26 42 views
-1

我已经创建了一个新的自定义控件,继承自Bar controlDevComponents.DotNetBar控件。接下来,我创建了一个新的Dock选项卡并添加了其他控件。禁用自定义DevComponents.DotNetBar控件的编辑子控件

在编译我的自定义控件并在新的Windows窗体中添加我创建的自定义控件之后,Dock选项卡控件在设计时可编辑。

我不希望任何人都可以在设计时编辑这些控件(Dock选项卡控件)。如何禁止在设计时从窗体编辑控件(与编辑控件本身不同)?

public partial class barFloorsGrouping : Bar 
{ 
    public barFloorsGrouping() 
    { 
     InitializeComponent(); 
    } 

    [ReadOnly(true)] 
    public new System.Windows.Forms.AccessibleRole AccessibleRole 
    { 
     get { return base.AccessibleRole; } 
     private set { base.AccessibleRole = System.Windows.Forms.AccessibleRole.ToolBar; } 
    } 

    [Browsable(false), ReadOnly(true)] 
    public new bool AlwaysDisplayDockTab 
    { 
     get { return base.AlwaysDisplayDockTab; } 
     private set { base.AlwaysDisplayDockTab = true; } 
    } 

    [Browsable(false), ReadOnly(true)] 
    public new bool AlwaysDisplayKeyAccelerators 
    { 
     get { return base.AlwaysDisplayKeyAccelerators; } 
     private set { base.AlwaysDisplayKeyAccelerators = true; } 
    } 

    [ReadOnly(true)] 
    public new bool AntiAlias 
    { 
     get { return base.AntiAlias; } 
     private set { base.AntiAlias = true; } 
    } 

    [Browsable(false), ReadOnly(true)] 
    public new bool AutoCreateCaptionMenu 
    { 
     get { return base.AutoCreateCaptionMenu; } 
    } 

    [ReadOnly(true)] 
    public new bool AutoHide 
    { 
     get { return base.AutoHide; } 
    } 

    [Browsable(false), ReadOnly(true)] 
    public new bool AutoHideTabTextAlwaysVisible 
    { 
     get { return base.AutoHideTabTextAlwaysVisible; } 
    } 

    [Browsable(false), ReadOnly(true)] 
    public new bool AutoSyncBarCaption 
    { 
     get { return base.AutoSyncBarCaption; } 
     private set { base.AutoSyncBarCaption = true; } 
    } 

    [Browsable(false), ReadOnly(true)] 
    public new eBarType BarType 
    { 
     get { return base.BarType; } 
     private set { base.BarType = eBarType.DockWindow; } 
    } 

    [ReadOnly(true)] 
    public new bool CanAutoHide 
    { 
     get { return base.CanAutoHide; } 
    } 

    [ReadOnly(true)] 
    public new bool CanDockTab 
    { 
     get { return base.CanDockTab; } 
     private set { base.CanDockTab = false; } 
    } 

    [ReadOnly(true)] 
    public new bool CanUndock 
    { 
     get { return base.CanUndock; } 
     private set { base.CanUndock = false; } 
    } 

    [Browsable(false), ReadOnly(true)] 
    public new bool CloseSingleTab 
    { 
     get { return base.CloseSingleTab; } 
    } 

    [Browsable(false), ReadOnly(true)] 
    public new bool DisplayMoreItemsOnMenu 
    { 
     get { return base.DisplayMoreItemsOnMenu; } 
     private set { base.DisplayMoreItemsOnMenu = true; } 
    } 

    [ReadOnly(true)] 
    public new DockStyle Dock 
    { 
     get { return base.Dock; } 
    } 

    [Browsable(false), ReadOnly(true)] 
    public new bool DockTabCloseButtonVisible 
    { 
     get { return base.DockTabCloseButtonVisible; } 
    } 

    [Browsable(false), ReadOnly(true)] 
    public new bool FadeEffect 
    { 
     get { return base.FadeEffect; } 
     private set { base.FadeEffect = true; } 
    } 

    [Browsable(false), ReadOnly(true)] 
    public new eGrabHandleStyle GrabHandleStyle 
    { 
     get { return base.GrabHandleStyle; } 
     private set { base.GrabHandleStyle = eGrabHandleStyle.Caption; } 
    } 

    [Browsable(false), ReadOnly(true)] 
    public new eLayoutType LayoutType 
    { 
     get { return base.LayoutType; } 
     private set { base.LayoutType = eLayoutType.DockContainer; } 
    } 

    [Browsable(false), ReadOnly(true)] 
    public new bool MenuBar 
    { 
     get { return base.MenuBar; } 
    } 

    [Browsable(false), ReadOnly(true)] 
    public new bool TabNavigation 
    { 
     get { return base.TabNavigation; } 
     private set { base.TabNavigation = true; } 
    } 

    [Browsable(false), ReadOnly(true)] 
    public new bool WrapItemsDock 
    { 
     get { return base.WrapItemsDock; } 
     private set { base.WrapItemsDock = true; } 
    } 

    protected override void OnPaint(PaintEventArgs pe) 
    { 
     base.OnPaint(pe); 
    } 
} 
+2

的WinForms/WPF? –

+0

WinForms 感谢您的关注。 – MRS1367

+0

那么你有什么尝试? –

回答

0

您必须通过扩展的设计模式行为使用ParentControlDesigner Class。 ParentControlDesigner类为可以包含子控件的控件的设计者提供了一个基类。

因此,对于实现你的目标,你必须DesignerAttribute一个组件实现设计时服务,如下面的(书面上课前只需添加下面的代码):

-1

编辑:由于我总是在asp.net和web表单工作...这个答案是的WebForms

你需要重写的WebControl的GetDesignTimeHtml。

看到MSDN docs

这听起来像你对我有没有做了很多服务器控件创建的,所以你是在一个很大的乐趣......

+0

我的问题是在Windows应用程序中设计自定义控件。 – MRS1367

+0

@ MRS1367你原来的问题没有说明什么平台,我清楚地表明这是webforms设计时支持所需的。 downvote返回 –

+0

对不起,保罗沙利文关于这一点。但是,感谢您的评论。 – MRS1367

相关问题