【问题标题】:Two-Way Bind Variables To Form Control双向绑定变量到表单控件
【发布时间】:2019-06-06 13:54:35
【问题描述】:

使用winforms,就像您可以使用listbox1.datasource = new List<string>(...) 将列表框的数据绑定到项目列表一样,您如何将文本框绑定到变量值?

我知道有一些不直观的方法可以做到这一点。

例如

class form : Form {

    string name;

    //change variable every time the textbox changes

    private void name_textbox_change(object sender, EventArgs e)
    {
        name=name_textbox.text();
    }

    //change variable on closing

    private void form_closing(object sender, EventArgs e)
    {
        name=name_textbox.text();
    }



}

但在所有这些情况下,您必须为每个变量显式分配值给变量。 理想情况下,我可以做类似的事情。

name_textbox.datasource = name;

其中 name 每次文本框更改时都会更改,并且每次 name 变量更改时文本框都会更改。

我知道您可以在某种程度上使用System.ComponentModel.INotifyPropertyChanged,但我相信您仍然需要为要链接的每个变量手动编写getter 和setter。

【问题讨论】:

  • 也许将事件处理程序添加到文本框构造函数?你基本上会做你上面所做的事情。我的猜测是制作一个扩展文本框的自定义文本框,添加一个数据源属性。
  • 我认为这可能有效,第一句话就是。基本上添加一个处理程序并将变量作为参数传递,该参数将在文本框编辑时更改。 @thanatorr
  • WPF?窗体?数据绑定在两个平台上都有很好的记录。有很多教程和课程。虽然有很大的不同
  • @dymanoid 怎样让它更容易理解?
  • Data binding for TextBox的可能重复

标签: c# .net winforms


【解决方案1】:

尝试数据绑定

textBox.DataBindings.Add("Text", this, "PropertyToBind");

请注意,“PropertyToBind”是在您的类中声明的属性的名称,就像您的表单一样

【讨论】:

    猜你喜欢
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 2011-02-11
    • 1970-01-01
    • 2019-10-26
    • 2012-02-11
    • 2017-07-15
    相关资源
    最近更新 更多