今天发送了一个帖子《关于 System.ComponentModel.IDataErrorInfo》,第一次发送到主页上,以为很简单,随便说了一下,谁知道几个人都说太短了,没办法,谁叫我好事发送到首页呢。
我想你学习.net的时候一定使用过 ErrorProvider控件吧,在一个普通的绑定dataSet(或者dataView)的窗口中,如果你拖动一个ErrorProvider控件到窗口,并设置他的数据源也是这个dataset(或者dataview),那么你执行诸如下面的话时:
row1.SetColumnError("CallName","必须填写名称");
这里的row1是datatable的某行,CallName是字段名。
这个时候,你会发现绑定到CallName的文本框后面“神奇”的出现了一个感叹号,并在闪烁。
详细的使用方法可以参见《msdn中ErrorProvider介绍》。
我的文章从自定义载体说起,关于什么是O/M,博客堂以前的文章有大量的介绍。
由于没有使用dataset,所以丧失了大量的功能,包括这个“神奇”的感叹号,在.net 1.1中我并没有发现比较明显的接口表明这个功能,幸运的是在.net 2.0中,我发现了大量有用的接口,包括这个IDataErrorInfo接口。
实际上,ErrorProvider控件通过这个接口获取绑定的载体的错误信息,所以,我在我的自定义载体 DataRowBase中实现了这个接口,在那篇文章中就是实现这个接口的代码。
当然,如果你还看不懂的话,我只能说:哦,你还年轻,有的是机会。
(玩笑而已,术业有专攻,编程本身太多分支,只不过你研究这个,我研究那个而已)
随笔- 302
文章- 0
评论- 895
阅读-
78万
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构