WinForm实现基于BindingSource的方法扩展
2023-06-13 09:15:43 时间
本文实例展示了WinForm实现基于BindingSource的方法扩展,共享给大家供大家参考。具体方法如下:
关键代码如下:
usingSystem; usingSystem.Collections.Generic; usingSystem.Reflection; usingSystem.Windows.Forms; namespaceWinFormUtilHelpV2 { ///<summary> ///基于.NET2.0的BindingSource工具类 ///</summary> publicstaticclassBindingSourceToolV2 { ///<summary> ///获取Control的BindingSource ///</summary> ///<paramname="control">Control</param> ///<returns>BindingSource</returns> publicstaticBindingSourceGetBindingSource(thisControlcontrol) { if(control!=null) { PropertyInfo_finded=control.GetType().GetProperty("DataSource"); if(_finded!=null) { object_dbsource=_finded.GetValue(control,null); if(_dbsource!=null&&_dbsourceisBindingSource) { return_dbsourceasBindingSource; } } } returnnull; } ///<summary> ///从BindingSource中条件移出 ///</summary> ///<typeparamname="T">泛型</typeparam> ///<paramname="dbSource">BindingSource</param> ///<paramname="match">委托</param> ///<returns>条件移出个数</returns> publicstaticintRemove<T>(thisBindingSourcedbSource,Predicate<T>match)whereT:class { int_count=0; if(dbSource!=null) { for(inti=0;i<dbSource.List.Count;i++) { object_cur=dbSource.List[i]; if(match((T)_cur)) { dbSource.List.Remove(_cur); _count++; i--; } } } return_count; } ///<summary> ///从BindingSource中条件查找 ///</summary> ///<typeparamname="T">泛型</typeparam> ///<paramname="dbSource">BindingSource</param> ///<paramname="match">委托</param> ///<returns>没有查找到则返回NULL</returns> publicstaticTFind<T>(thisBindingSourcedbSource,Predicate<T>match)whereT:class { T_finded=null; if(dbSource!=null) { foreach(TtindbSource.List) { if(match(t)) { _finded=t; break; } } } return_finded; } ///<summary> ///从BindingSource中条件查找集合 ///</summary> ///<typeparamname="T">泛型</typeparam> ///<paramname="dbSource">BindingSource</param> ///<paramname="match">委托</param> ///<returns>没有查找到则返回NULL</returns> publicstaticIList<T>FindAll<T>(thisBindingSourcedbSource,Predicate<T>match)whereT:class { IList<T>_findedList=null; if(dbSource!=null) { _findedList=newList<T>(); foreach(TtindbSource.List) { if(match(t)) { _findedList.Add(t); } } } return_findedList; } } }
测试代码如下:
usingSystem; usingSystem.Collections.Generic; usingSystem.Windows.Forms; usingWinFormUtilHelpV2; usingWinFormUtilHelpV2Test.Models; namespaceWinFormUtilHelpV2Test { publicpartialclassWinBindingSourceToolV2Test:Form { publicWinBindingSourceToolV2Test() { InitializeComponent(); } privatevoidWinBindingSourceToolV2Test_Load(objectsender,EventArgse) { IList<Person>_source=newList<Person>(); for(inti=0;i<10;i++) { Person_entity=newPerson(); _entity.Age=i; _entity.Name="YanZhiwei"+i; _source.Add(_entity); } dataGridView1.SetBindingSource(_source); } privatevoidbutton1_Click(objectsender,EventArgse) { Person_person=dataGridView1.GetBindingSource().Find<Person>(c=>c.Age==5); MessageBox.Show("条件查找:"+_person!=null?"查找到一个.":"未查找到."); } privatevoidbutton2_Click(objectsender,EventArgse) { int_count=dataGridView1.GetBindingSource().Remove<Person>(c=>c.Age>=5); MessageBox.Show("成功移出:"+_count); } privatevoidbutton3_Click(objectsender,EventArgse) { IList<Person>_personList=dataGridView1.GetBindingSource().FindAll<Person>(c=>c.Age<5); MessageBox.Show("条件查找:"+_personList!=null?"查找到"+_personList.Count+"个":"未查找到."); } } } ///<summary> ///DataGridViewSetBindingSource ///</summary> ///<typeparamname="T">IList</typeparam> ///<paramname="dataGrid">dataGrid</param> ///<paramname="source">泛型</param> publicstaticvoidSetBindingSource<T>(thisDataGridViewdataGrid,IList<T>source) { BindingList<T>_bindinglist=newBindingList<T>(source); BindingSource_source=newBindingSource(_bindinglist,null); dataGrid.DataSource=_source; }
测试结果如下图所示:
希望本文所述实例对大家C#程序设计能有所帮助!
相关文章
- 手把手教你写上位机软件(c#、winform)
- c html美化winform,C# WinForm界面美化
- winform与php交互,WinForm与Javascript交互「建议收藏」
- form操作MySQL在Winform中的操作(mysqlwin)
- c#winform窗口一直置顶显示在桌面最上方或最底层的方法
- WinForm子窗体访问父窗体控件的实现方法
- Winform跨线程操作的简单方法
- C#WINFORM强制让窗体获得焦点的方法代码
- C#WinForm程序完全退出的问题解决
- C#中使用IrisSkin2.dll美化WinForm程序界面的方法
- c#实现winform屏幕截图并保存的示例
- Winform启动另一个项目传值的方法
- C#(WinForm)ComboBox和ListBox添加项及设置默认选择项
- WinForm实现读取Resource中文件的方法
- winform导出dataviewgrid数据为excel的方法
- C#WinForm编程获取文件物理路径的方法
- WinForm之BindingSource基础操作实例教程
- winform异型不规则界面设计的实现方法
- 在WCF数据访问中使用缓存提高Winform字段中文显示速度的方法