C# 确定自定义winforms控件的设计时上下文

C# 确定自定义winforms控件的设计时上下文,c#,.net,winforms,user-controls,windows-forms-designer,C#,.net,Winforms,User Controls,Windows Forms Designer,假设我有一个自定义WinForms控件: public class MyBaseControl : Control { ... } 扩展如下: public class MyControl : MyBaseControl { ... } 通过检查this.DesignMode属性标志,确定控件是否正在进行可视化设计是非常简单的,但是是否有方法确定MyControl本身是否正在设计,而不是在设计时在from上操作? 为了提供更多的说明,在MyControl类中,我试图在设

假设我有一个自定义WinForms控件:

public class MyBaseControl : Control
{
     ...
}
扩展如下:

public class MyControl : MyBaseControl
{
     ...
}
通过检查
this.DesignMode
属性标志,确定控件是否正在进行可视化设计是非常简单的,但是是否有方法确定
MyControl
本身是否正在设计,而不是在设计时在from上操作?


为了提供更多的说明,在
MyControl
类中,我试图在设计组件时区分设计时间:

当组件在设计时从工具箱添加到表单时:


您可以检查控件是否在设计器中是root用户。
您可以获取服务,然后检查属性,以查看控件是否是当前设计器的根组件

using System.Windows.Forms;
using System.ComponentModel.Design;
public partial class MyBaseControl : UserControl
{
    public MyBaseControl()
    {
        InitializeComponent();
    }

    public bool IsRootDesigner
    {
        get
        {
            var host = (IDesignerHost)this.GetService(typeof(IDesignerHost));
            if (host != null)
                return host.RootComponent == this;

            return false;
        }
    }
}

有人要求澄清,添加了截图,以更清楚地显示我正在努力实现的目标。感谢您的澄清:)这正是我想要的。多谢各位。