通过反射设置表单的designmode属性

时间:2019-02-11 17:18:39

标签: c# winforms reflection

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

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

1 个答案:

答案 0 :(得分:0)

从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();

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