網站首頁 編程語言 正文
DataBindings屬性是很多控件都有的屬性,作用有2方面。一方面是用于與數據庫的數據進行綁定,進行數據顯示。另一方面用于與控件或類的對象進行數據綁定。這里主要關注后者。主要用法是將某個對象的某個屬性與指定對象的指定屬性進行關聯.
Label、TextBox等都包含DataBindings屬性,其類型為ControlBindingsCollection,是Binding類的集合。Binding類代表某對象屬性值和某控件屬性值之間的簡單綁定。如可以將TextBox的Text屬性值綁定到Label的Text屬性值,這樣,當TextBox中的文本被修改的時候,Label的文本也會及時進行修改,如下面的代碼所示:
Label1.DataBindings.Add("Text",TextBox1,"Text");
Binding類除了可以將對象的屬性綁定到控件的屬性之外,還可以將對象列表中當前對象的屬性值綁定到控件的屬性。
當使用Binding的構造函數創建實例時,必須指定三項內容:
- 要綁定到的控件屬性的名稱
- 數據源
- 數據源中解析為列表或屬性的導航路徑
其中,數據源可以為:
- 實現 IBindingList 或 ITypedList 的任何類。包括:DataSet、DataTable、DataView 或 DataViewManager。?
- 實現 IList 的任意索引集合類。(必須在創建 Binding 之前創建和填充該集合,并且列表中的所有對象必須為同一類型,否則將引發異常)?
- 強類型對象的強類型 IList。
導航路徑可以為空字符串(默認將調用數據源的ToString()方法)、單個屬性名稱或用點分隔的名稱層次結構。
名稱層次結構是什么意思呢?比如我們有一個Company類,它包含Name屬性和Employees屬性(公司所有Employee的集合),而Employee類又包含Name屬性。那么,如果要將Company的Name屬性綁定到TextBox控件的Text屬性,代碼為:
TextBox1.DataBindings.Add("Text", company, "Name");
如果要綁定Employees的Name屬性,代碼為:
TextBox1.DataBindings.Add("Text", company, "Employees.Name");
Employess.Name即為用點分隔的名稱層次結構。在這里,Employees為一個集合,將Employees.Name綁定到TextBox會出現什么情況呢?測試后可知,TextBox將顯示Employees集合中第一個Employee的Name屬性。
示例:
界面
代碼實現:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace DataBindingsDemo { public partial class FrmDataBindings : Form { public FrmDataBindings() { InitializeComponent(); } private void FrmDataBindings_Load(object sender, EventArgs e) { //綁定到DataTable DataTable dtSource = GetDataTable(); this.textBox1.DataBindings.Add("Text", dtSource, "StudentNo"); this.textBox2.DataBindings.Add("Text", dtSource, "StudentName"); this.textBox3.DataBindings.Add("Text", dtSource, "Sex"); //綁定到實體對象 Student stu = new Student() { StudentNo=2,StudentName="測試2",Sex="女"}; //必須是綁定到對象的屬性(此例中綁定到StudentNo,而不是student), this.textBox4.DataBindings.Add("Text", stu, "StudentNo"); this.textBox5.DataBindings.Add("Text", stu, "StudentName"); this.textBox6.DataBindings.Add("Text", stu, "Sex"); } private DataTable GetDataTable() { DataTable dt = new DataTable(); DataColumn dcNo = new DataColumn("StudentNo", typeof(Int32)); DataColumn dcName = new DataColumn("StudentName", typeof(string)); DataColumn dcSex = new DataColumn("Sex", typeof(string)); dt.Columns.Add(dcNo); dt.Columns.Add(dcName); dt.Columns.Add(dcSex); dt.Rows.Add(new object[] { 1,"測試","男"}); return dt; } } public class Student { private int studentNo; public int StudentNo { get { return studentNo; } set { studentNo = value; } } private string studentName; public string StudentName { get { return studentName; } set { studentName = value; } } private string sex; public string Sex { get { return sex; } set { sex = value; } } } }
運行效果:
原文鏈接:https://www.cnblogs.com/dotnet261010/p/6731126.html
- 上一篇:C#實現鼠標消息捕獲_C#教程
- 下一篇:詳解Matlab如何繪制小提琴圖_C 語言
相關推薦
- 2023-04-24 Python?相對路徑報錯:"No?such?file?or?directory"'原因及解決方法_
- 2022-10-21 IDEA集成Docker實現一鍵部署的詳細過程_docker
- 2022-08-19 利用Python實現簡單的驗證碼處理_python
- 2022-12-01 Go?sync?WaitGroup使用深入理解_Golang
- 2022-06-02 TensorFlow實現簡單線性回歸_python
- 2022-05-05 Entity?Framework表拆分為多個實體_實用技巧
- 2022-04-09 Python實現簡易的限流器介紹_python
- 2022-08-06 C語言實現簡單登錄操作_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同步修改后的遠程分支