網站首頁 編程語言 正文
使用可以綁定數據源的控件我們需要有實現了IList接口的類作為數據源,我們有很多的方法,比如使用ArrayList或者List的泛型類都是很方便的,或者不怕麻煩的索性直接上DataTable。
但我們也許想實現一個專用于某個自己定義的對象的list類,這樣其他類想錯誤的加入這個list都不可能了。
一、利用VS的修補程序快速繼承IList
假定我有一個Creature的類,如果我們直接在上面加上接口的繼承,則會出現報錯提示,如下圖:
說明,這些接口成員都是必須實現的。
我們來一一實現,其實也不必要,因為我們只是借用它的接口讓Creature類成為一個可以充當數據源DataSource的類。
我們點擊最下面的顯示可能的修補程序(Alt+Enter即可),然后點預覽,可以根據自己的需要修改。
如果不需要特別的修改,基本直接應用即可,只是不能應用到數據源綁定上。表面上看這樣這個類就實現了IList接口了,但要用于數據源綁定就必須實現我所列出的5個成員,否則還是不能做為數據源給控件使用。
二、實現必須的成員
#region 做數據綁定必須實現的成員
/// <summary>
/// 添加元素必須的方法
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public int Add(object? value)
{
list.Add(value);
return list.Count;
//throw new NotImplementedException();
}
public int Count { get { return list.Count; } }
public object? this[int index] {
get { return list[index]; }
set { list[index] = value; }
}
/// <summary>
/// 如果要作為DataGridView的數據源,必須實現這個屬性
/// </summary>
public bool IsReadOnly { get { return false;}
}
/// <summary>
/// 迭代必須的方法
/// </summary>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public IEnumerator GetEnumerator()
{
return list.GetEnumerator();
//throw new NotImplementedException();
}
#endregion
我們來看看效果:
這里我們測試了三種綁定數據源的控件,分別是ListBox,ComboBox,DataGridView ,沒有發現任何問題,是不是特別的容易!
原文鏈接:https://haigear.blog.csdn.net/article/details/128771648
相關推薦
- 2022-06-30 Oracle在PL/SQL中使用存儲過程_oracle
- 2023-06-17 解讀C語言非void函數卻沒有return會怎么樣_C 語言
- 2022-05-20 Python?文件處理之open()函數_python
- 2022-09-01 C++?OpenCV實戰之形狀識別_C 語言
- 2022-03-18 .Net使用分表分庫框架ShardingCore實現多字段分片_實用技巧
- 2024-01-10 在多Module項目中,給IDEA底部選項卡區域添加Services選項卡
- 2022-10-03 基于WPF實現控件輪廓跑馬燈動畫效果_C#教程
- 2022-03-08 Qt?儀表盤的實現示例_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支