通过反射设置窗体的设计模式属性



我可以创建并显示通过反射从dll文件加载的表单。我想欺骗浮动形式,使其认为它处于设计模式。我认为应该可以在某处的表单中找到一个支持变量并通过反射进行设置,但我无法完全找到它以及设置它的代码。有人可以帮助我找到一种方法让表单认为它处于设计模式吗?

我知道该属性是只读的,但也许有一个基础字段。

从 thehennyy 的评论中,我做了一个虚假的类来充当网站:

public class MySite : IServiceProvider, ISite
{
    public IComponent Component => null;
    public IContainer Container => null;
    public bool DesignMode => true;
    public string Name { get => ""; set => value = ""; }
    public object GetService(Type serviceType)
    {
        return null;
    }
}

然后在启动窗体之前,我将 Site 属性设置为此类的实例:

form.Site = new MySite();

这确实可以使表单相信它处于设计模式,而实际上并非如此。 幸运的是,该网站是公共财产。

最新更新