日期:2014-05-17  浏览次数:20702 次

关于用户控件在开发状态拖入窗体设计界面执行Load事件中的代码出错
我先是做了一个用户控件,在其load事件中调用了开启数据采集线程的函数。
我的本意是希望在程序运行时,控件加载完毕后就自动开启数据采集。
但现在我在主窗体拖放该控件时也触发了他的Load事件导致VS崩溃。
请问如何才能避免在开发时拖放控件不执行load事件中的代码。
或者怎么写,才能让一段代码只在程序编译后运行时执行,在开发状态下不执行呢?

------解决方案--------------------
很简单,
写一个静态变量

  static bool isDevModel=true;

在你的逻辑代码里面加一句

//比如初始事件里面
  if (isDevModel)
     return
//逻辑代码

在入口点里面给静态变量赋值

 Main函数
{
isDevModel=false;
}

说白了就是用个静态变量控制一下,设计模式不走逻辑代码,运行的时候再走。
------解决方案--------------------
引用:
我先是做了一个用户控件,在其load事件中调用了开启数据采集线程的函数。
我的本意是希望在程序运行时,控件加载完毕后就自动开启数据采集。
但现在我在主窗体拖放该控件时也触发了他的Load事件导致VS崩溃。
请问如何才能避免在开发时拖放控件不执行load事件中的代码。
或者怎么写,才能让一段代码只在程序编译后运行时执行,在开发状态下不执行呢?
           ……

什么平台?请一定要说清楚。

对于winform,你在load中应该先检测DesignMode属性,只有不是设计状态,才应该调用你的代码。

比如说你做一个DataForm控件,你肯定不能在设计时去读取数据库(否则不但会让设计器变慢,而且会死掉)。那么你就需要在DesignMode下显示一堆示例数据。微软的许多控件就是这样,在设计器里它给出示例数据,只有在运行时才真正去帮定数据。这就需要你判断是不是在设计器状态下。