栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C# > C#教程

C# TextBox数据绑定的方法

C#教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C# 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(expression> 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使用的单向绑定。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/122815.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号