如何在构造函数中使用Visual Studio不会在设计时执行代码?
我在我的用户控件的构造函数中有一个方法调用,它做了一些在设计时无法工作的东西(连接到数据库),而当我尝试将该控件添加到GUI设计器时,Visual Studio就得到了保护。
当然,我可以将代码分解为一个单独的方法,但我不喜欢每次使用该对象时我都需要记住执行某个对象函数必不可少的方法的想法(这就是构造函数是什么对于!)。
是否有类似预处理器符号的东西,我可以用我的代码标记,以便Visual Studio不会尝试在设计时执行该代码?
正如其他人所说,您可以使用Component
类的DesignMode
属性。 但是,您将无法在控件的构造函数中执行此操作。 在构造函数调用的构造函数和方法中, DesignMode
属性始终为false
。 要解决此问题,请重新考虑代码以连接到OnLoad()
回调中的数据库。 DesignMode
属性在该点有效。 请参阅此处了解原因(查看本文的DesignMode部分)。
我刚刚浏览了这个博客条目 ,该条目描述了如何使用System.ComponentModel.LicenseManager.UsageMode
属性来执行相同的操作。 该博客描述了处理嵌套控件时DesignMode
属性的另一个缺点。 显然, UsageMode
属性没有相同的缺点,可以在构造函数中使用。 我不能亲自担保,但可能值得研究。
在Windows窗体?
if (!DesignMode) { // code that shouldn't be executed at design time }
正如其他人所提到的,这在构造函数中不起作用。 它通常用于Form.Load
事件。
看看这个
Component.DesignMode属性
我喜欢Michael Petrotta的Windows Forms方法。 如果有人想将相同的技术应用于WPF,只需使用IsInDesignMode
。
例:
public SomeViewModel() { if (!IsInDesignMode) { DoWork(); } }
public SomeViewModel() { if (!IsInDesignMode) { DoWork(); } }
如果您正在处理您尝试使用的实际UI,请使用上面的代码。 如果你在控件上有类似的东西,当你切换回该控件的设计器时,它没问题,没有设计时错误。 现在,如果您通过从工具箱中拖动包含上述代码的控件将其添加到某个其他窗体或其他控件,则会显示一些设计时错误。
上述就是C#学习教程:如何在构造函数中使用Visual Studio不会在设计时执行代码?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1251259.html