pol*_*lot 17 c# design-time visual-studio
我在我的用户控件的构造函数中有一个方法调用,它做了一些在设计时无法工作的东西(连接到数据库),当我尝试将该控件添加到GUI设计器时,Visual Studio就被挽救了.
当然,我可以将代码分解为一个单独的方法,但我不喜欢每次使用该对象时我都需要记住执行某个对象函数必不可少的方法的想法(这就是构造函数的作用)对于!).
是否有类似预处理器符号的东西,我可以标记我的代码,以便Visual Studio不会尝试在设计时执行该代码?
Mat*_*vis 27
正如其他人所说,你可以使用该类的DesignMode属性Component.但是,您将无法在控件的构造函数中执行此操作.该DesignMode属性始终false位于构造函数调用的构造函数和方法中.要解决此问题,请重新考虑代码以连接OnLoad()回调中的数据库.该DesignMode物业在此时有效.请参阅此处了解原因(查看本文的DesignMode部分).
我刚刚浏览了这个博客文章,描述了如何使用该System.ComponentModel.LicenseManager.UsageMode属性执行相同的操作.该博客描述了DesignMode处理嵌套控件时属性的另一个缺点.显然,该UsageMode属性没有相同的缺点,可以在构造函数中使用.我不能亲自担保,但可能值得研究.
Mic*_*tta 14
在Windows窗体?
if (!DesignMode)
{
// code that shouldn't be executed at design time
}
Run Code Online (Sandbox Code Playgroud)
正如其他人所提到的,这在构造函数中不起作用.它经常在Form.Load事件中使用.