2012-08-26 43 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

相關問題