【发布时间】:2010-09-07 06:33:14
【问题描述】:
有没有人在开发控件时找到了设计模式问题的有用解决方案?
问题在于,如果您嵌套控件,则 DesignMode 仅适用于第一级。二级及更低级别的 DesignMode 将始终返回 FALSE。
标准的破解方法是查看正在运行的进程的名称,如果它是“DevEnv.EXE”,那么它必须是工作室,因此 DesignMode 真的是 TRUE。
问题在于寻找 ProcessName 通过注册表和其他奇怪的部分工作,最终结果是用户可能没有查看进程名称所需的权限。另外这条奇怪的路线很慢。所以我们不得不增加额外的技巧来使用单例,如果在询问进程名称时抛出错误,则假设 DesignMode 为 FALSE。
确定 DesignMode 的好方法是有序的。真正让微软在框架内部修复它会更好!
【问题讨论】:
-
+1 表示“让微软在内部将其修复到框架中会更好” - 某人的十分钟时间将节省数万人的时间。如果有一个程序依赖于一个 bug 和 100,000 个不便,那么保留 bug 以避免给一个程序带来不便是没有意义的!
-
您好,这是 2008 年发布的。现在修复了吗?
-
在 VS 2012 中,现在保持不变
-
请注意,如果对 UserControl 使用自定义设计器(例如,我已经使用派生自 ControlDesigner 的类进行了测试),那么调用 EnableDesignMode(subControl) 似乎会使子控件的 DesignMode 属性起作用。这不是解决问题的有效方法,但是因为我们并不总是创建包含我们控制的容器。
标签: .net user-controls