本文转自http://www.cnblogs.com/ldp615/archive/2009/11/25/vs2008_usercontrol_stackoverflowexception.html
今天,使用VS2008做了一个WinFom的用户控件,编写代码时犯了一个“小小”的错误,确付出了惨重的代价。
下面就还原一下“案发现场”:
新建一个Window窗体应用程序项目:
向项目中添加一个用户控件:
打开UserControl1,向其添加一个TextBox:
转到代码,写一个属性Text,在19~23行
注意21行中,使用return Text,就是我犯的“小小”错误。它的本意如下:
真正应该返回的textBox1的Text属性。因为这个属性太“简单”了,没放在心上,代码又有智能提示…
打开Form1,从工具箱中将这个用户控件置入窗体:
错误出现了:
点击确定,VS2008就关闭了。
后记
为了解决这个问题,我花费了一个多小时的时间!大家不要取笑,我的实际情况要比上述复杂的多:用户控件的代码近千行,而且控件已经置入窗体,错误是编译生成时出现的,而且没有任何提示(VS2008直接关闭)。重复打开项目无数次,一编译就关掉,又来回反复的检查代码…
其实发生错误的原因很简单,就是一个StackOverflow。
虽然错误是我犯下的,但微软也有“责任”的,为什么不try/catch一下?为什么不提示详细一些?为什么就突然崩溃(让我也差点崩溃)?
“小小”错误,惨重的代价,发出来,提醒大家一下。
-------------------
思想火花,照亮世界