任何人都能告诉我下面的错误提供者代码之间的差异吗?

时间:2014-03-20 15:44:57

标签: c# .net winforms

IDE:Visual Studio 2010,C#.net应用程序,winforms

我很惊讶这段代码 Code-1 工作正常

    ErrorProvider ef = new ErrorProvider();
    private void textBox1_TextChanged(object sender, EventArgs e)
    {
        if (textBox1.Text == string.Empty)
        {
            ef.SetError(textBox1, "asdf");
        }
        else
        {
            ef.Clear();
        }
    }

但此代码代码2

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
        ErrorProvider ef = new ErrorProvider(); //changes is here
        if (textBox1.Text == string.Empty)
        {
            ef.SetError(textBox1, "asdf");
        }
        else
        {
            ef.Clear();
        }
    }

没有工作,即它没有提供错误处理设施。任何人都可以告诉我这两个代码之间有什么区别的确切原因。为什么第二个代码不能正常工作..

1 个答案:

答案 0 :(得分:2)

code1 中,您可以在事件处理程序范围之外创建ef对象,这样在处理事件后ef对象仍然存在,其中< strong> code2 处理事件后,ef对象将被销毁。