gpt4 book ai didi

c# - 是否有可能知道ErrorProvider在哪个控件上显示?

转载 作者:行者123 更新时间:2023-12-03 08:52:44 25 4
gpt4 key购买 nike

我有许多文本框可用来进行各种验证,并且有一点我只需要在代码到达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旨在对对象的实际删除进行过早清理(例如,释放非托管内存,关闭文件描述符或套接字等),请参见MSDN documentationtutorial

要真正删除错误提供程序(在将来某个时候),您必须将对其的所有引用都设置为null(或另一个ErrorProvider)。

无论哪种方式(通过处理或设置为null),之后都将无法再适当使用提供程序–如果将来仍需要错误提供程序进行验证,则必须将其替换为新实例。我可以很好地想象这不是您想要的,可能更适合您清除错误(将SetError与空字符串一起使用)。

注意:“DataSource是可以附加到控件并且要监视错误的数据源。可以将DataSource设置为实现IList的任何集合。” (请参阅MSDN)。因此,您将无法获得预期的结果。

您可以将Tag属性设置为文本框,然后比较ep.Tag == tb(无toString,无名称,仅直接引用)。

关于c# - 是否有可能知道ErrorProvider在哪个控件上显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36886349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com