[转] C# TextBox、DataGrideView中的数据绑定

摘要:
Xavier r原始C#数据绑定——简单文本框绑定、DataGridView 1和TextBox数据绑定通常编写一个程序,使用TextBox显示对象,然后在编辑后保存。以下代码是to_myData对象的“TheValue”属性绑定到textBox1和textBox2的“Text”属性。最后一个参数不同:1)DataSourceUpdateMode。OnPropertyChanged表示textBox1.Text已更改d_MyData。值也会发生变化,称为双向绑定。2) DataSourceUpdateMode。从不表示Text1.Text的更改不会影响myData的值。TheValue是一个单向绑定。文本框1.文本更改-˃_ MyData。值更改-˃文本框2.文本更改。

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的值,是单向绑定。

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接 口。

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(this, new PropertyChangedEventArgs(memberExpression.Member.Name));
    }
}

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

[转] C# TextBox、DataGrideView中的数据绑定第1张

  二、DataGridView的数据绑定

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

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

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

Column1.DataPropertyName = "ID"

免责声明:文章转载自《[转] C# TextBox、DataGrideView中的数据绑定》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇react基础用法图像检索(image retrieval)- 10下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

MySQL锁详解

MySQL锁详解update语句执行流程MySQL的锁介绍按照锁的粒度来说,MySQL主要包含三种类型(级别)的锁定机制:全局锁:锁的是整个database。由MySQL的SQLlayer层实现的表级锁:锁的是某个table。由MySQL的SQLlayer层实现的行级锁:锁的是某行数据,也可能锁定行之间的间隙。...

Qt使用镜像源快速安装与更新

如果我们选择在线安装模式,那就更麻烦了,因为下载速度一般不慢。事实上,在中国,Qt图片来源很多,但很少有人使用。原因是Qt图像源做得不好。如果我们导入它,它将自动链接到官方图像源。因为它已经从官方来源同步,没有更改,所以我们无法逐个添加补丁,这太麻烦了。好吧,让我停止胡说八道。让我告诉你如何使用国产Qt图像源。...

webstorm关闭烦人的eslint语法检查

使用eslint语法检查后,我们发现JS代码中到处都是红线。通过右键菜单中的fixeslint problems选项,我们可以发现页面代码格式完全被eslint包装。只需关闭exlint语法检查。看不见,想不起来。反向关闭不会影响代码开发,但相反,它会影响代码开发。关闭eslint位置:文件--˃设置--˃语言和框架--˃CodeQualityTools--...

PHP 垃圾回收机制(转)

GC进程通常从每个会话开始运行。GC的目的是在会话文件过期__destruct/unset__destruct()析构函数后自动销毁和删除它们。PHP将使用全局变量session.gc_Probability和session.gc_advisor的值session.gc_Probability=1,...

Django如何安装指定版本

Django的最新版本默认安装为:pipinstalldjangoDjango,然后是版本号:pipinstalldjango==1.11.7如果使用pipinstall库的安装速度较慢,您可以使用豆瓣的图片:pipinstalldjango==1.11.7-ihttp://pypi.douban.com/simple--trusted-hostpypi.d...

iostat

-pdevice|ALL和-x选项互斥。它们用于显示块设备和系统分区的统计信息。您还可以在-p之后指定设备名称,例如#iostat phda或显示所有设备:#iostat pALL-t输出数据时,打印数据收集时间---等待I/O svctm的平均时间:服务时间,从生成IO请求到完成IO的时间。从源代码中可以看出:--完成I/O需求的平均时间*=util---...