C# UserControl 判断DesignMode
C# UserControl 判断DesignMode
.Net开发UserControl时,我们经常需要得知当前是Design Mode还是Runtime Mode。
在Design Mode时,.Net并不会运行你的系统,它只会把当前控件,及其所有父类都初始化一遍,一般包括其构造函数,OnLoad(),OnInit()等方法。 如果在OnLoad或者OnInit中,写了一些只有在Runtime Mode时才能执行成功的代码,那么当你在Form的设计模式下查看这个窗口时,很有可能会得到一个"对象为空或未初始化"的错误,从而无法创建该控件的实例。我还遇到过更狠的情况,就是我写的控件在Runtime Mode时,一切正常,但在Design Mode下,一打开该文件,立刻重启VS2005,暴汗啊,这么强悍的控件,我是不是应该佩服自己。言归正传,那怎样处理这种情况呢,一个简单的方法是写try和catch,把异常吃掉,还有一种方法就是判断是Design Mode还是Runtime Mode,做不同的处理。代码如下:
//运行环境:Windows7 + VS2005 + Framework2.0SP2
//直接用this.DesignMode == true无效
if (this.GetService(typeof(IDesignerHost)) != null || System.ComponentModel.LicenseManager.UsageMode == System.ComponentModel.LicenseUsageMode.Designtime)
{ //design mode
}
else
{
//runtime mode
}
转自 http://blog.sina.com.cn/s/blog_5421dfd20100fx3d.html
放到自己博客当中,必备查询。
最新文章
- java web学习总结(三十一) -------------------EL表达式
- time step和采样频率的关系
- 【转】理解inode
- 【poj2983】 Is the Information Reliable?
- th:each
- python获取系统时间
- PHP基础设计模式——工厂模式
- KMP精讲
- rootvg 镜像
- hdu-4418-Time travel-高斯+概率dp
- linux的命令使用记录
- 字符串长度截取换行/n
- iOS屏幕适配(尺寸适配)
- 地图API地址 百度地图开放平台
- Java 执行远程主机shell命令代码
- select 多选 (EasyUI)
- LeetCode 973 K Closest Points to Origin 解题报告
- php二分法查找
- springcloud 入门 1 (浅谈版本关系)
- LiveCD及Casper调研