Click here to Skip to main content
15,897,315 members
Please Sign up or sign in to vote.
4.00/5 (1 vote)
I have created a new Custom Control inheriting from Bar control of DevComponents.DotNetBar controls. Next, I have created a new dock tab in it and have added my other controls to it.
After I compile my Custom Control and add my created Custom Control in a new Windows Form, Dock Tab Controls are editable at design time.
I don't want that anybody can edit these controls (Dock Tab Controls) in design time. How can I disable editing the controls at design time from the form (not the same as editing the control itself)?

C#
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);
    }
}
Posted
Updated 28-Aug-12 4:35am
v10

You must extend the design mode behavior by using ParentControlDesigner Class. ParentControlDesigner Class provides a base class for designers of controls that can contain child controls.
So, for achieve to your Goal, you must implement design-time services for a component by DesignerAttribute as the following (Just add below code before the written class):

C#
[Designer("System.Windows.Forms.Design.ParentControlDesigner, System.Design", typeof(IDesigner))]
public partial class barFloorsGrouping : Bar
{
...
}
 
Share this answer
 
Just define a bool property and add a condition at beginning of the method that creates controls automatically.

C#
bool AllowCreate;

C#
public void Do()
{
    if (AllowCreate)
    {
        // your code to create controls
    }
}
 
Share this answer
 
Comments
MRS1989 26-Aug-12 11:48am    
My problem is in design architect. Espen Harlinn is understood right my problem; however, I'm new to this subject of programming in C#.
Assuming you are not in Silverlight or WPF, you can check for the Component.DesignMode Property[^] - you need to do this recursively using the Parent property for the control.

Best regards
Espen Harlinn
 
Share this answer
 
Comments
MRS1989 26-Aug-12 11:39am    
Can you explain that? I'm not very familiar with manipulating controls.
Wendelius 26-Aug-12 17:22pm    
To Espen: Good advice, 5'ed. I actually wrote a small tip about this and how the DesignMode can be resolved from outside the control (since it's protected). If you want to have a look, its Resolve DesignMode for a user control[^]. If you want to make changes etc. to it. I'd be more than happy to add you as a co-author.
MRS1989 27-Aug-12 0:27am    
Thanks for your comment. It was useful for me but was irrelevant to my problem.
My problem is disabling child controls of a custom control that are enabled by default. I don't want that user can select it, see their properties and change them.
You explain that how can understand a control (include UserControl or CustomControl) is in design mode or not. I know about it. However, I want that prevent from select automatically created child controls by other users.
Thank you in advance for any help.
Wendelius 27-Aug-12 0:33am    
Thanks for the comment. Yes I noticed that this is a different situation, but it was just giving the idea for a small tip :)
MRS1989 27-Aug-12 3:13am    
So, U can help me???

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900