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线程的限制,感觉也是最稳定的一种方式,平时选择可以用这种方式。
相关推荐
影寂ldy2 小时前
C# try-catch 异常处理全套笔记
服务器·数据库·c#
TeamDev3 小时前
JxBrowser 9.3.0 版本发布啦!
java·后端·c#·混合应用·jxbrowser·浏览器控件·异步媒体设备
梦帮科技3 小时前
UE5 GAS 实战:用 Gameplay Ability System 搭建「赛博修真」境界与技能体系
c++·人工智能·python·ue5·c#
北域码匠8 小时前
RIPEMD-128哈希算法深度解析
c#·密码学·哈希算法·加密算法·消息摘要·ripemd-128·原生实现
csdn_aspnet10 小时前
C# 截取或匹配字符串内包含指定字符
c#·字符串·正则·string·匹配·截取
hez20104 天前
在 .NET 上构建超大托管数组
c#·.net·.net core·gc·clr
雨落倾城夏未凉9 天前
第四章c#方法-参数数组和可选参数(16)
后端·c#
唐青枫10 天前
线程不是越多越快:C#.NET Thread 生命周期、同步与后台工作线程实战
c#·.net
唐青枫11 天前
别只会反射:C#.NET Emit 动态生成代码实战详解
c#·.net
咕白m62512 天前
.NET 环境下 Word 超链接批量提取方案
c#·.net