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

标签 c# error-handling datasource errorprovider

我有许多文本框可用来进行各种验证,并且有一点我只需要在代码到达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/

相关文章:

c# - 使用 foreach 和 .contains 比较两个字典以查找唯一和非唯一数据的最快方法

c# - NHibernate 在自动刷新事件上表现不佳?

python - 我能找出导致我的 Python MemoryError 的分配请求吗?

c# - 如何以小写形式显示网址?

c# - Azure 存储表插入失败并显示 "One of the request inputs is not valid"

c++ - 在哪里可以看到与 errno 交互的函数列表?

javascript - PHP本地主机和服务器的结果不同

kendo-ui - Kendo Datasource.Data() 等于 Datasource.View()

java - Spring-boot 数据源提交问题

java - 将连接从 Java 应用程序传递到 Birt 报告