Xavierr 原文 C#数据绑定——简单的文本框绑定、DataGridView

一、TextBox的数据绑定

经常写用一个TextBox显示某个对象,然后编辑之后再保存的程序。以前都是在TextBox_TextChanged事件中修改对象的值,或者保存的时候再读取TextBox.Text属性保存对象的值。这样比较麻烦,而且经常容易出错。后来了解了C#的数据绑定,发现能够很好的解决这个问题。

1. 首先C#的TextBox本身就带数据绑定功能。

下面的代码就是把_myData对象的"TheValue"属性绑定到textBox1和textBox2的"Text"属性。最后一个参数不同:

1)其中DataSourceUpdateMode.OnPropertyChanged表示textBox1.Text发生变化,_myData.TheValue也变化,叫双向绑定。

2)DataSourceUpdateMode.Never表示Text1.Text变化不影响_myData.TheValue的值,是单向绑定。

1
2
3
4
5
6
private void Form1_Load(object sender, EventArgs e)
{
    _myData = new MyData();
    textBox1.DataBindings.Add("Text", _myData, "TheValue"false, DataSourceUpdateMode.OnPropertyChanged);
    textBox2.DataBindings.Add("Text", _myData, "TheValue"false, DataSourceUpdateMode.Never);
}

2.也许有人留意到了,为什么上面的叫"双向绑定"呢?如果_myData.TheValue的值变化了,两个文本框的Text会变化吗?不错,仅在 textBox上数据绑定还不叫双向绑定,对象数据变化要通知绑定该对象的控件才行。这样就需要对象实现INotifyPropertyChanged接 口。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public class MyData : INotifyPropertyChanged
{
    private string _theValue = string.Empty;
    public string TheValue
    {
        get return _theValue; }
        set
        {
            if (string.IsNullOrEmpty(value) && value == _theValue)
                return;
            _theValue = value;
            NotifyPropertyChanged(() => TheValue);
        }
    }
    public event PropertyChangedEventHandler PropertyChanged;
    public void NotifyPropertyChanged<T>(Expression<Func<T>> property)
    {
        if (PropertyChanged == null)
            return;
        var memberExpression = property.Body as MemberExpression;
        if (memberExpression == null)
            return;
        PropertyChanged.Invoke(thisnew PropertyChangedEventArgs(memberExpression.Member.Name));
    }
}

3.好了,数据绑定完成了,看看效果吧。textBox1.Text变化—>_myData.TheValue变化—>textBox2.Text变化。反过来textBox2.Text变化就不是这样了,因为textBox2使用的单向绑定。

二、DataGridView的数据绑定

没什么可说的,DataGridView可以绑定DataSet,也可以绑定DataTable。直接设置DataSource属性。

1
2
3
DataSet dataSet = new DataSet();
dataGridView1.DataSource = dataSet;
dataGridView1.DataSource = dataSet.Tables[0];

设置DataGridView的Column属性就可以决定哪一列显示的数据。

1
Column1.DataPropertyName = "ID"

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。

本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/5814894.html,如需转载请自行联系原作者

[转] C# TextBox、DataGrideView中的数据绑定相关推荐

  1. 深入剖析微软ASP.NET Ajax中的数据绑定构架下篇之二

    四.例2-数据库绑定 现在,我们来讨论更为复杂的数据库绑定的例子.根据我们前面的讨论,我们找到了使用DataSource的典型场所:在前面的例1中,我们使用了一种内存数据来模拟有状态的web服务.但是 ...

  2. ASP.NET 2.0 中实现模板中的数据绑定系列(2)

    双向数据绑定       FormView可以通过相关的数据源控件支持自动地更新.插入和删除操作(与DetailsView类似).如果要定义编辑或插入的UI,那么除了定义数据项模板(ItemTempl ...

  3. WPF入门教程系列十五——WPF中的数据绑定(一)

    使用Windows Presentation Foundation (WPF) 可以很方便的设计出强大的用户界面,同时 WPF提供了数据绑定功能.WPF的数据绑定跟Winform与ASP.NET中的数 ...

  4. C#TextBox控件实现数据绑定的方法

    经常写用一个TextBox显示某个对象,然后编辑之后再保存的程序.以前都是在TextBox_TextChanged事件中修改对象的值,或者保存的时候再读取TextBox.Text属性保存对象的值.这样 ...

  5. Windows Presentation Foundation(WPF)中的数据绑定(使用XmlDataProvider作控件绑定)

    原文:Windows Presentation Foundation(WPF)中的数据绑定(使用XmlDataProvider作控件绑定) ------------------------------ ...

  6. ASP.NET 2.0中实现模板中的数据绑定

    模板化的数据绑定控件为我们在页面上显示数据提供了根本的灵活性.你可能还记得ASP.NET v1.x中的几个模板化控件(例如DataList和Repeater控件).ASP.NET 2.0仍然支持这些控 ...

  7. js 取得input绑定的datalist中的值_javascript基础修炼(9)——MVVM中双向数据绑定的基本原理...

    [小宅按] 开发者的javascript造诣取决于对[动态]和[异步]这两个词的理解水平. 一. 概述 1.1 MVVM模型 MVVM模型是前端单页面应用中非常重要的模型之一,也是Single Pag ...

  8. uni-app中的数据绑定

    uni-app中的数据绑定 在页面中需要定义数据,和我们之前的vue一模一样,直接在data中定义数据即可 export default {data () {return {msg: 'hello-u ...

  9. 【值转换器】 WPF中Image数据绑定Icon对象

    原文:[值转换器] WPF中Image数据绑定Icon对象 这是原来的代码: <Image Source="{Binding MenuIcon}"  /> 这里的Men ...

最新文章

  1. 将Eclipse中Web项目打成war包
  2. 用eclipse玩转Python,让习惯java开发的童鞋拥有一个更爽的开发体验
  3. [JavaScript]牛人的JS是怎么玩的
  4. sql必知必会样例表导入失败_记录WordPress搬家遇到的数据库导入错误问题
  5. MediaPlayer loading 问题解决
  6. 开始学习Solaris
  7. MySQL查询优化-explain
  8. android dts配置_AndroidLinux关于DTS设备树源码的介绍
  9. 【机器学习】集成学习ensemble之随机森林
  10. python log函数_Python log10() 函数
  11. C语言读取txt文档中的数据
  12. Android service 中的stub类
  13. 大数据平台的3个核心功能
  14. 从0到1打造推荐系统-架构篇
  15. mysql 清除主从_mysql主从同步及清除信息
  16. No Route to Host from master/192.168.2.131 to master:9000 failed on socket t
  17. matlab中常微分方法,MATLAB常微分方程
  18. 【报告分享】2021中国品牌消费趋势报告-京东大数据研究院(附下载)
  19. PS各个工具的字母快捷键和英…
  20. C++ [-Wreturn-local-addr] 局部变量的幽灵 在内存游荡

热门文章

  1. Vue2.x—理解vuex核心概念action(使用到ES6的变量的解构赋值)
  2. mysql创建用户报错ERROR 1290
  3. Approximate Nearest Neighbors.接近最近邻搜索
  4. 图形操作类CBitmap 把内存数据输出到PIC控件
  5. windows下可用mysql吗_Windows下MySQL安装配置与使用
  6. solidity智能合约[7]-整型与运算
  7. Hadoop 集群搭建
  8. linux命令学习记录一
  9. Rake::TestTask 介绍
  10. 银屑病需要的碱性食物