TextBox控件的DataBindings属性
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=,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[] { ,"测试","男"});
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; }
}
}
}
运行效果:

TextBox控件的DataBindings属性的更多相关文章
- 设置TextBox控件的TextMode属性
我想在程式代碼中將TextBox控件的TextMode属性设置為Password,寫成TextBox1.TextMode=MultiLine和TextBox1.TextMode="Multi ...
- 使用 Windows 窗体 TextBox 控件创建密码文本框
密码框是一种 Windows 窗体文本框,它在用户键入字符串时显示占位符. 创建密码文本框 将 TextBox 控件的 PasswordChar 属性设置为某个特定字符. PasswordChar 属 ...
- [摘]ASP.Net标准控件(TextBox控件)
TextBox控件 TextBox控件又称文本框控件,为用户提供输入文本的功能. 1.属性 TextBox控件的常用属性及说明如表1所示. 表1 TextBox控件常用属性及说明 属 性 说 ...
- 在TextBox控件中禁用鼠标右键
实现效果: 知识运用: MouseEventArgs类的Button属性 TextBox控件的ContextMenu属性 实现代码: private void textBox1_MouseDo ...
- WPF中利用控件的DataContext属性为多个TextBox绑定数据
工作上需要从给定的接口获取数据,然后显示在界面的编辑框中,以往肯定会一个一个的去赋值,但这样太麻烦而且效率很低,不利于维护,于是想到了数据绑定这一方法,数据绑定主要利用INotifyPropertyC ...
- 关于C#开发WEB项目TextBox控件的自适应高问题解决办法!
前两天做WEB开发时候遇到了一个小问题TextBox 控件要根据输入的内容多少自动改变大小,并且这个大小要求是在本页面内最大化.也就是 Width="100%" Height=&q ...
- [转载]ASP.NET中TextBox控件设立ReadOnly="true"后台取不到值
原文地址:http://www.cnblogs.com/yxyht/archive/2013/03/02/2939883.html ASP.NET中TextBox控件设置ReadOnly=" ...
- 验证标题是否存在(TextBox控件失去焦点验证)
首先解释两个属性, AutoPostBack 属性用于设置或返回当用户在 TextBox 控件中按 Enter 或 Tab 键时,是否发生自动回传到服务器的操作. 如果把该属性设置为 TRUE,则启用 ...
- C# Windows - TextBox 控件
.NET Framework内置了两个基本控件来提取用户输入的文本: TextBox和RichTextBox.这两个控件都派生于基类TextBoxBase,而TextBoxBase派生于Control ...
随机推荐
- Android ——真机调试
1. 设置android手机为USB调试模式.步骤: menu---> 设置 ---> 应用程序 ---> 开发 , 选择[USB调试] 2. 用USB连接手机和电脑,并确保成功.步 ...
- 基于HTTP在互联网传输敏感数据的消息摘要、签名与加密方案
基于HTTP在互联网传输敏感数据的消息摘要.签名与加密方案 博客分类: 信息安全 Java 签名加密AESMD5HTTPS 一.关键词 HTTP,HTTPS,AES,SHA-1,MD5,消息摘要,数 ...
- PL SQL基本内容(原创)
本节介绍PL SQL的基本内容 本节所举示例数据来源oracle用户scott下的emp表和dept表,数据如下: 一.plsql简介: 1.概念:procedural language,过程化sql ...
- Excel提示“此工作簿包含一个或多个无法更新的链接”怎么办
有时打开Excel文件时会弹出一个“此工作簿包含一个或多个无法更新的链接”的提示.对于初次接触这个提示的用户,可能会感到迷惑,不知道应该如何处理,这里以Excel2007为例,介绍一下这个提示出现的原 ...
- Error_OAF_the descriptive flexfield with application name payables and name is not frozen
2014-06-17 BaoXinjian 1. Issue and Eroor Error: The descriptive flexfield with application name paya ...
- 关于FSMC地址线的理解
http://www.openedv.com/thread-33759-1-1.html (出处: OpenEdv-开源电子网)
- [转] 基本RS触发器
在触发器中,最简单的触发器是基本RS触发器,它由两个与-非门(或者两个或-非门)来组成. 图5.2.1(a)是由与-非门构成的基本RS触发器,由图看出,基本RS触发器有两个输入端(和)和两个输出端(和 ...
- 在Spring中注入Java集合
集合注入重要是对数组.List.Set.map的注入,具体注入方法请参照一下代码(重点是applicationContext.xml中对这几个集合注入的方式): 1.在工程中新建一个Departmen ...
- (部署)使用kubernetes的deployment进行RollingUpdate
rolling update,可以使得服务近乎无缝地平滑升级,即在不停止对外服务的前提下完成应用的更新. replication controller与deployment的区别 replicatio ...
- selenium+phantomJS爬虫,适用于登陆限制强,点触验证码等一些场景
selenium是非常出名的自己主动化測试工具,多数场景是測试project师用来做自己主动化測试,可是相同selenium能够作为基本上模拟浏览器的工具,去爬取一些基于http request不能或 ...