• 让 VS2008 崩溃 的 WinForm 用户控件


    今天,使用VS2008做了一个WinFom的用户控件,编写代码时犯了一个“小小”的错误,确付出了惨重的代价。

    下面就还原一下“案发现场”:

    新建一个Window窗体应用程序项目:

    ControlError0

    向项目中添加一个用户控件:

    ControlError1

    打开UserControl1,向其添加一个TextBox:

    ControlError2

    转到代码,写一个属性Text,在19~23行

    ControlError3
    注意21行中,使用return Text,就是我犯的“小小”错误。它的本意如下:
    ControlError4 
    真正应该返回的textBox1的Text属性。因为这个属性太“简单”了,没放在心上,代码又有智能提示…

    打开Form1,从工具箱中将这个用户控件置入窗体:

    ControlError5

    错误出现了:

    ControlError6 

    点击确定,VS2008就关闭了。

    后记

    为了解决这个问题,我花费了一个多小时的时间!大家不要取笑,我的实际情况要比上述复杂的多:用户控件的代码近千行,而且控件已经置入窗体,错误是编译生成时出现的,而且没有任何提示(VS2008直接关闭)。重复打开项目无数次,一编译就关掉,又来回反复的检查代码…

    其实发生错误的原因很简单,就是一个StackOverflow。

    虽然错误是我犯下的,但微软也有“责任”的,为什么不try/catch一下?为什么不提示详细一些?为什么就突然崩溃(让我也差点崩溃)?

    “小小”错误,惨重的代价,发出来,提醒大家一下。

  • 相关阅读:
    MySQL 字符串与时间操作函数
    Redis消息订阅,事务,modules
    Redis数据结构
    Redis数据类型String
    Redis
    网络协议原理和lvs三种模型,调度算法和keepalived
    TCP连接状态,SYNC_RECV,CLOSE_WAIT,TIME_WAIT
    arp_ignore和arp_announce
    JMH和Disrupter
    容器CopyOnWriteList,ConcurrentHashMap,ConcurrentSkipListMap,BlockingQueue
  • 原文地址:https://www.cnblogs.com/ldp615/p/vs2008_UserControl_StackOverflowException.html
Copyright © 2020-2023  润新知