欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C# TextBox数据绑定的方法

程序员文章站 2023-12-16 13:41:28
经常写用一个textbox显示某个对象,然后编辑之后再保存的程序。以前都是在textbox_textchanged事件中修改对象的值,或者保存的时候再读取textbox.t...

经常写用一个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数据绑定的方法

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

上一篇:

下一篇: