C# UserControl 判断DesignMode

.Net开发UserControl时,我们经常需要得知当前是Design Mode还是Runtime Mode。
在Design Mode时,.Net并不会运行你的系统,它只会把当前控件,及其所有父类都初始化一遍,一般包括其构造函数,OnLoad(),OnInit()等方法。 如果在OnLoad或者OnInit中,写了一些只有在Runtime Mode时才能执行成功的代码,那么当你在Form的设计模式下查看这个窗口时,很有可能会得到一个"对象为空或未初始化"的错误,从而无法创建该控件的实例。我还遇到过更狠的情况,就是我写的控件在Runtime Mode时,一切正常,但在Design Mode下,一打开该文件,立刻重启VS2005,暴汗啊,这么强悍的控件,我是不是应该佩服自己C# <wbr>UserControl <wbr>判断DesignMode。言归正传,那怎样处理这种情况呢,一个简单的方法是写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
}


C#中的Timer控件是一种计时器控件,可以在指定的时间间隔内执行指定的代码。Timer控件有两种类型:System.Windows.Forms.Timer和System.Timers.Timer。其中,System.Windows.Forms.Timer是Windows窗体应用程序中使用的计时器,而System.Timers.Timer是在非UI线程中使用的计时器。 下面是System.Windows.Forms.Timer控件的详细介绍: 1. Timer控件的属性: - Enabled:获取或设置一个值,该值指示计时器是否应引发Tick事件。 - Interval:获取或设置计时器在引发Tick事件之前等待的时间间隔(以毫秒为单位)。 - Tag:获取或设置与控件关联的对象。 - Site:获取或设置控件的站点。 - CanRaiseEvents:获取一个指示组件是否可以引发事件的值。 - DesignMode:获取一个值,该值指示 Component 当前是否处于设计模式。 - Events:获取附加到此 Component 的事件处理程序的列表。 2. Timer控件的方法: - Start():启动计时器。 - Stop():停止计时器。 3. Timer控件的事件: - Tick:每当计时器间隔时间到达时发生。 下面是一个使用System.Windows.Forms.Timer控件的例子: ```csharp using System; using System.Windows.Forms; public class Form1 : Form { private Timer timer1; public Form1() { InitializeComponent(); timer1 = new Timer(); timer1.Interval = 1000; // 设置计时器间隔为1秒 timer1.Tick += new EventHandler(timer1_Tick); // 绑定Tick事件 timer1.Start(); // 启动计时器 } private void timer1_Tick(object sender, EventArgs e) { // 在这里编写计时器到达间隔时间后要执行的代码 } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值