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线程的限制,感觉也是最稳定的一种方式,平时选择可以用这种方式。
相关推荐
bugcome_com9 小时前
C# 常量详解:从基础语法到实际应用
c#
qq_1508419911 小时前
3天基于VS2026的C#编程入门及动态调用CH341DLLA64读写I2C从机
开发语言·c#
HAPPY酷14 小时前
Visual Studio C++ 项目“添加现有项“避坑指南
java·c++·visual studio
溪水西流14 小时前
NodifyEditor Zoom 机制分析
开发语言·c#·avalonia
Never_Satisfied17 小时前
在c#中,抛出异常,并指定其message的值
java·javascript·c#
不想看见40419 小时前
Word Ladder Ⅱ -- 广度优先搜索--力扣101算法题解笔记
开发语言·c#
全栈小519 小时前
【C#】.net 6.0和8.0有什么区别,以及8.0增加了那些功能,这些功能有那些作用
开发语言·c#·.net
qq_2979080120 小时前
C#印刷线路板ERP进销存报价财务库存贸易生产企业管理系统软件
sqlserver·开源·c#·.net·开源软件
bugcome_com20 小时前
C# 循环语句详解:理解常见循环类型与控制语句
c#
数据知道20 小时前
PostgreSQL:Citus 分布式拓展,水平分片,支持海量数据与高并发
分布式·postgresql·wpf