c# - 将标签绑定(bind)到 "variable"

标签 c# winforms data-binding

假设我有一个名为 X 的全局变量 INT。由于 X 是全局的,我们可以假设任何东西都可以修改它的值,因此它每次都会被更改。

假设我有一个名为“label”的标签控件。这是我想要完成的:

我想将 label.Text 的值“绑定(bind)”到变量 X。这样当变量 X 发生变化时,它会反射(reflect)回 label.Text。

现在,我不想编写事件监听器并与委托(delegate)一起玩这个(我希望代码量尽可能少)。有没有办法为此使用 DataBinding 组件?或任何其他新技术?

最佳答案

如果您想使用数据绑定(bind)基础设施,并反射(reflect)对值所做的更改,您需要一种方法来通知 UI 对绑定(bind)值所做的更改。

所以最好的方法是使用属性并实现 INotifyPropertyChanged 接口(interface),如下所示:

class frmFoo : Form, INotifyPropertyChanged
{        
    private string _foo;

    public string Foo
    {
        get { return _foo; }
        set
        {
            _foo = value;
            OnPropertyChanged("Foo");
        }
    }

    protected virtual void OnPropertyChanged(string property)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(property));
    }

    #region INotifyPropertyChanged Members

    public event PropertyChangedEventHandler PropertyChanged;

    #endregion
}

还请记住,您需要先在标签上设置绑定(bind):

public frmFoo()
{
    InitializeComponent();
    lblTest.DataBindings.Add(new Binding("Text", this, "Foo"));
}

关于c# - 将标签绑定(bind)到 "variable",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3147043/

相关文章:

c# 在运行时动态创建泛型列表

c# - 消息框出现两次 C#

c# - DataGridView 复选框列 "select all"性能

svg - Angular2 Svg 文本属性绑定(bind)

c# - mvvm - PropertyChanged 不更新带有列表修改的 GUI,但如果我分配一个新列表 - C# silverlight

c# - 在派生类的构造函数中添加事件处理程序或覆盖 OnX() 方法?

C# - 如何在删除行后刷新 DataGridView

wpf - 如何使WPF TreeView风格成为WinForms TreeView?

没有触发键绑定(bind)的 WPF MVVM 命令

c# - 与未命名的文本框关联的 NumericUpDown