gpt4 book ai didi

c# - 确定自定义 Winforms 控件的设计时上下文

转载 作者:行者123 更新时间:2023-11-30 21:51:17 25 4
gpt4 key购买 nike

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

public class MyBaseControl : Control
{
...
}

扩展如下:

public class MyControl : MyBaseControl
{
...
}

通过检查 this.DesignMode 属性标志,可以很简单地确定控件是否经过视觉设计,但是有没有办法确定 MyControl 本身是被设计的,而不是在设计时被操纵的?


为了提供额外的说明,在 MyControl 类中,我试图在设计组件本身时区分设计时:

"Control" designer

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

enter image description here

最佳答案

您可以在设计器中检查控件是否为root。
你可以获得 IDesignerHost服务然后检查RootComponent属性以查看您的控件是否是当前设计器的根组件。

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;
}
}
}

关于c# - 确定自定义 Winforms 控件的设计时上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35788673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com