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 ...
随机推荐
- Google地图之OverlayView使用(自定义叠加层)
Google Maps API 第 3 版提供了用于创建自定义叠加层的 OverlayView 类.OverlayView 是一个基类,提供了您在创建叠加层时必须实现的若干方法.该类还提供了一些方法, ...
- sleep()和usleep()的使用和区别
在iOS中 如果 在主线程中用这2个 都会 对 主线程 造成 阻塞 具体区别 如下 Linux 中的 代码 为例 函数名: sleep头文件: #include <windows.h> ...
- 最简易的PHP Storm调试模式开启方式
使用的是xdebug调试工具. 其实真的很想吐槽php语言开启调试模式真的好麻烦. 据说xdebug调试工具不支持php7.0以下版本,我同事的php5.6就不支持噗嗤.. 正文: 1.先用phpSt ...
- 采用dlopen、dlsym、dlclose加载动态链接库
1.前言 为了使程序方便扩展,具备通用性,可以采用插件形式.采用异步事件驱动模型,保证主程序逻辑不变,将各个业务已动态链接库的形式加载进来,这就是所谓的插件.linux提供了加载和处理动态链接库的系统 ...
- GDI+绘制简单图形
#include <windows.h>#include <gdiplus.h>using namespace Gdiplus;#pragma comment(lib, &qu ...
- Python2 字典 has_key() 方法
描述 Python2 字典 has_key() 方法用于判断键(key)是否存在于字典(D)中,如果键在字典中返回True,否则返回False. 官方文档推荐用 in 操作符,因为它更短更通俗易懂.h ...
- JabRef中添加中文文献出现乱码 解决方法
JabRef中添加中文文献出现乱码 解决方法 问题描述 JaBRef是一款开源的文献管理软件,主要用来管理bibtex格式的参考文献,可以与LATEX配合使用,方便论文参考文献的使用.文献管理 ...
- javascript中字符串与数组互转的方法分享
说明:1.join()方法:用于把数组中的所有元素放入一个字符串,元素是通过指定的分隔符进行分隔的.指定分隔符方法join("$");其中$可以是任意字符2.split()方法:用 ...
- IP分片
物理网络层一般要限制每次发送数据帧的最大长度.任何时候IP层接受到一份要发送的IP数据报时,它要判断向本地哪个接口发送数据(选路),并查询该接口获得其MTU(最大传输单元:Maximum Transm ...
- 如何在 Ubuntu 和 CentOS 上启用 Nginx 的 HTTP/2 协议支持
HTTP/2 是 HTTP 网络协议的主要修订版本,其专注于 HTTP 协议的性能改进.HTTP/2 协议的目标是减少延迟,并且允许在 Web 浏览器和服务器之间的一个连接上并行发起多个请求,因此 W ...