none
怪异的Load()事件 RRS feed

  • 问题

  • 在主窗体的Load事件中有如下代码:
    private void Tool_Load(object sender, EventArgs e)
    {
      ......
      C_tbx_Year.Text = (DateTime.Now.Year - 1).ToString();
      ......
    }
    
    这段代码之前是可以正常执行的,但是最近再执行时,居然出问题了,Load事件到给C_tbx_Year(一个TextBox)的Text属性赋值时,该语句以及事件中之后的语句都不会被执行,直接就跳过去了,该语句自身没有报错。
    改为以下语句是可以正常执行的:
    private void Tool_Load(object sender, EventArgs e)
    {
      ......
      string abc = (DateTime.Now.Year - 1).ToString();
      ......
    }
    但是一旦给C_tbx_Year的Text属性赋值就不行了,如下语句到赋值时依然是被跳过:
    private void Tool_Load(object sender, EventArgs e)
    {
      ......
      string abc = (DateTime.Now.Year - 1).ToString();
      C_tbx_Year.Text = abc;
      ......
    }
    另:这个TextBox放在一个Panel中,Panel放在SplitContainer中。
    求真相,不胜感激!
    2011年5月31日 7:12

答案

  • 你最近有没有对窗体进行过什么其它的操作?请仔细回忆一下——

    临时解决方法——

    在构造函数的 (假设你的Form叫做Form1)

     public Form1()
            {
                InitializeComponent();

                 //此处开始你的代码

                 string abc = (DateTime.Now.Year - 1).ToString();
                C_tbx_Year.Text = abc;

                ………………

            }


    如果你有其它意见或私下交流,请发送邮件到:maledong@qq.com;或者请QQ我
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    • 已标记为答案 2011年5月31日 8:31
    2011年5月31日 7:30
    版主
  • 问题找到了,是C_tbx_Year的TextChanged()事件中使用了一个未赋值的变量,但是这个变量也在窗体的Load()事件中赋值,VS的调试居然没能准确定位错误。直到把一部分代码移到构造函数中才显露出来。谢谢你的提示。

    怪异的是之前的版本居然没报错。太粗心了。


    • 已标记为答案 2011年5月31日 8:31
    2011年5月31日 8:30

全部回复

  • 你最近有没有对窗体进行过什么其它的操作?请仔细回忆一下——

    临时解决方法——

    在构造函数的 (假设你的Form叫做Form1)

     public Form1()
            {
                InitializeComponent();

                 //此处开始你的代码

                 string abc = (DateTime.Now.Year - 1).ToString();
                C_tbx_Year.Text = abc;

                ………………

            }


    如果你有其它意见或私下交流,请发送邮件到:maledong@qq.com;或者请QQ我
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    • 已标记为答案 2011年5月31日 8:31
    2011年5月31日 7:30
    版主
  • 没有对窗体有操作,因为程序提供给客户后就没有再修改过,是最近客户想修改一处,才重新打开代码。

    之前因为一个系统补丁装不上,根据提示用微软的卸载工具卸载.net framework后又重装的,刚开始发现问题时以为是framework的问题,用工具校验后发现framework完整才仔细调试代码,发现是这一句问题,但是不知道是什么原因造成的。

    2011年5月31日 8:14
  • 问题找到了,是C_tbx_Year的TextChanged()事件中使用了一个未赋值的变量,但是这个变量也在窗体的Load()事件中赋值,VS的调试居然没能准确定位错误。直到把一部分代码移到构造函数中才显露出来。谢谢你的提示。

    怪异的是之前的版本居然没报错。太粗心了。


    • 已标记为答案 2011年5月31日 8:31
    2011年5月31日 8:30