当前位置: 首页 > 编程语言 > C#

如何在设计时不执行代码的情况下在构造函数中使用VisualStudio?分享

时间:2023-04-10 15:14:36 C#

如何在构造函数中使用VisualStudio而不是在设计时执行代码?我在我的用户控件的构造函数中有一个方法调用,它执行一些在设计时不起作用的事情(连接到数据库),当我尝试将控件添加到GUI设计器时,VisualStudio受到保护。当然,我可以将代码分解成一个单独的方法,但我不喜欢这样的想法,即每次我使用该对象时,我都需要记住执行某些对象功能所必需的方法(这就是构造函数的用途!)。是否有类似预处理器符号的东西,我可以用我的代码进行标记,以便VisualStudio不会在设计时尝试执行该代码?正如其他人所说,您可以使用Component类的DesignMode属性。但是,您将无法在控件的构造函数中执行此操作。在构造函数和构造函数调用的方法中,DesignMode属性始终为false。要解决此问题,请重新考虑您的代码以在OnLoad()回调中连接到数据库。DesignMode属性此时生效。请参阅此处了解原因(查看本文的设计模式部分)。我刚刚看到这个博客条目,它描述了如何使用System.ComponentModel.LicenseManager.UsageMode属性来执行相同的操作。这篇博客描述了DesignMode属性在处理嵌套控件时的另一个缺点。显然,UsageMode属性没有同样的缺点,可以在构造函数中使用。我个人不能保证,但它可能值得研究。在Windows窗体中?if(!DesignMode){//不应在设计时执行的代码}正如其他人所提到的,这在构造函数中不起作用。它通常用在Form.Load事件中。查看Component.DesignMode属性我喜欢MichaelPetrotta的Windows窗体方法。如果有人想将相同的技术应用于WPF,只需使用IsInDesignMode。示例:publicSomeViewModel(){if(!IsInDesignMode){DoWork();}}publicSomeViewModel(){if(!IsInDesignMode){DoWork();如果您正在处理您尝试使用的实际UI,请使用上面的代码。如果控件上有类似的东西,当您切换回该控件的设计器时,没问题,没有设计时错误。现在,如果您通过将包含上述代码的控件从工具箱中拖动到其他窗体或其他控件,它会显示一些设计时错误。以上是C#学习教程:如何在设计时不执行代码的情况下在构造函数中使用VisualStudio?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: