是否可以知道 ErrorProvider 显示在哪个控件上?
Is it possible to know which control an ErrorProvider is displaying on?
我有很多文本框,我用它们进行各种验证,有一点我只需要在代码到达 if 语句时删除一个 errorProvider。
我在这方面做了什么:
if (errorProviderSame1.DataSource.ToString() != null && errorProviderSame2.DataSource.ToString() != null)
{
if (errorProviderSame2.DataSource.ToString() == textBoxSvrcAtual.Name)
errorProviderSame2.Dispose();
if (errorProviderSame1.DataSource.ToString() == textBoxSvrcAtual.Name)
errorProviderSame1.Dispose();
}
Note: I run all of the validations in the text changed event and the
"textBoxSvrcAtual" is the name of the textBox I am comparing to the
errorProvide DataSource
Dispose 不会删除对象。如果不再有引用该对象的变量,则实际删除由垃圾收集器自动完成。
Dispose 旨在对对象的实际删除过早地进行一些清理(例如释放非托管内存、关闭文件描述符或套接字,...),请参阅 MSDN documentation and tutorial.
要真正删除错误提供程序(在将来的某个时间点),您必须将 all 对它的引用设置为空(或另一个错误提供程序)。
无论哪种方式(通过处置或设置为 null),您之后都将无法再适当地使用该提供程序 – 如果您仍然需要错误提供程序以供将来验证,则必须更换它与一个新的实例。我可以很好地想象这不是你真正想要的,可能更适合你只是清除错误(使用带空字符串的 SetError)。
注意:"The DataSource is a data source that you can attach to a control and that you want to monitor for errors. DataSource can be set to any collection that implements IList."(参见MSDN)。所以你不会得到你所期望的。
您可以改为将标签 属性 设置为文本框并比较 ep.Tag == tb
(没有 toString,没有名称,直接引用)。
我有很多文本框,我用它们进行各种验证,有一点我只需要在代码到达 if 语句时删除一个 errorProvider。 我在这方面做了什么:
if (errorProviderSame1.DataSource.ToString() != null && errorProviderSame2.DataSource.ToString() != null)
{
if (errorProviderSame2.DataSource.ToString() == textBoxSvrcAtual.Name)
errorProviderSame2.Dispose();
if (errorProviderSame1.DataSource.ToString() == textBoxSvrcAtual.Name)
errorProviderSame1.Dispose();
}
Note: I run all of the validations in the text changed event and the "textBoxSvrcAtual" is the name of the textBox I am comparing to the errorProvide DataSource
Dispose 不会删除对象。如果不再有引用该对象的变量,则实际删除由垃圾收集器自动完成。
Dispose 旨在对对象的实际删除过早地进行一些清理(例如释放非托管内存、关闭文件描述符或套接字,...),请参阅 MSDN documentation and tutorial.
要真正删除错误提供程序(在将来的某个时间点),您必须将 all 对它的引用设置为空(或另一个错误提供程序)。
无论哪种方式(通过处置或设置为 null),您之后都将无法再适当地使用该提供程序 – 如果您仍然需要错误提供程序以供将来验证,则必须更换它与一个新的实例。我可以很好地想象这不是你真正想要的,可能更适合你只是清除错误(使用带空字符串的 SetError)。
注意:"The DataSource is a data source that you can attach to a control and that you want to monitor for errors. DataSource can be set to any collection that implements IList."(参见MSDN)。所以你不会得到你所期望的。
您可以改为将标签 属性 设置为文本框并比较 ep.Tag == tb
(没有 toString,没有名称,直接引用)。