Winform和WPF中关于是否处于设计模式的判断方式

在界面开发中,若在构造函数中增加了加载数据的代码,在设计界面时会出现界面打不开或者出现报错的情况。此时,可以检查一下是否为该情况。

Winform中的DesignMode判断

复制代码
	在WinForm开发中,一般会在窗体或者UserControl中判断当前是否为设计状态,如:
csharp 复制代码
if (!this.DesignMode)
{
    //
}

WPF中的DesignMode判断

WPF中提供你一个类似WinForm的DesignMode属性的方法来判断当前是否处于设计器模式:

csharp 复制代码
 bool IsInDesignMode
    {
        get { return DesignerProperties.GetIsInDesignMode(this); }
    }

对于非UI对象,要判断是否处于设计器模式,则可以这么使用:

csharp 复制代码
 bool IsInDesignMode
    {
        get { return DesignerProperties.GetIsInDesignMode(new DependencyObject()); }
    }
csharp 复制代码
  上述两种方式如果无法生效,可以选择下面的方式。无法生效的原因不清楚,有大佬知道可以评论区留言。
   bool IsInDesignMode
    {
        get
        {
            return (bool)DesignerProperties.IsInDesignModeProperty
                        .GetMetadata(typeof(DependencyObject)).DefaultValue;
        }
    }
复制代码
	这种方式没有UI线程的限制,感觉也是最稳定的一种方式,平时选择可以用这种方式。
相关推荐
苍狼唤5 小时前
WinForm练习知识补充(多线程)
c#
逝水无殇8 小时前
C# 字符串(String)详解
开发语言·后端·c#
小巧的砖头10 小时前
C#会重蹈覆辙吗?系列之2:反射及元数据的性能问题
开发语言·前端·c#
医疗信息化王工14 小时前
从零到一:基于 GGUF 格式部署 Unlimited-OCR 搭建企业级证件识别服务
图像处理·c#·ocr
zyh______15 小时前
C#语法糖(按照实用性排序)
unity·c#
z落落16 小时前
C#五大加密算法(AES、DES、MD5、RSA、SHA)
开发语言·c#
孝顺的书包16 小时前
将《C# 调用非托管程序》一文中最后一种方法修改如下(篇幅原因简化了注释):
开发语言·c#
辰三16 小时前
统信 UOS + GBase 8s 国产化环境部署实战:从虚拟机到数据库连接完整指南
linux·c#
标致的钢铁侠16 小时前
c# 温故而知新: 线程篇(一)
java·jvm·c#
蜗牛~turbo17 小时前
金蝶云星空的网络控制设置
开发语言·c#·金蝶·erp·云星空·k3 cloud