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 ...
随机推荐
- HDU 3666 THE MATRIX PROBLEM (差分约束 深搜 & 广搜)
THE MATRIX PROBLEM Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- Spring MVC POST中文乱码解决方案
spring Web MVC框架提供了org.springframework.web.filter.CharacterEncodingFilter用于解决POST方式造成的中文乱码问题,具体配置如下: ...
- JMeter学习笔记--使用HTTP信息头管理器
使用HTTP信息头管理,可以帮助测试人员设定JMeter发送的HTTP请求头所包含的信息.HTTP信息头中包含有”User-Agent".“Pragma".”Referer&quo ...
- DBA_实践指南系列7_Oracle Erp R12监控OAM(案例)
2013-12-07 Created By BaoXinjian
- Android 报错:Conversion to Dalvik format failed: Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.
在android高版本开发环境(sdk 4.4)导入低版本(sdk 3.0)的工程时编译报错,报错信息如:Conversion to Dalvik format failed: Unable to e ...
- Linux 关机 休眠, 关闭移动设备自动挂载 命令
"+++++++++++++++++++++++++ Linux 关机.休眠命令 +++++++++++++++++++++++++++++++++++++++"indows7关机 ...
- lcx.exe内网转发命令教程 + LCX免杀下载
作者: 小健 本机: lcx -listen 2222 3333 2222为转发端口,3333为本机任意未被占用的端口 肉鸡:lcx -slave 119.75.217.56 2222 127.0.0 ...
- Python 列表 count() 方法
描述 Python 列表 count() 方法用于统计某个元素在列表中出现的次数. 语法 count() 方法语法: L.count(obj) 参数 obj -- 列表中统计的对象. 返回值 返回元素 ...
- 解决maven构建webapp index.jsp报错问题
今天早上想用maven 构建一个webapp 然后index.jsp华华丽丽的报错了 当时我的心情是一万头草泥马奔过啊,为啥你给我创建的webapp 还会报错啊!!!!!! 然后百度了一下,各种说少 ...
- Spring在xml配置里配置事务
事先准备:配置数据源对象用<bean>实例化各个业务对象. 1.配置事务管理器. <bean id="transactionManager" class=&quo ...