【问题标题】:c# Label Text Databinding does not refresh Textc#标签文本数据绑定不刷新文本
【发布时间】:2018-12-21 12:46:55
【问题描述】:

我有带有 BindingSource 属性的标签数据绑定。 Label.Text 属性只更新一次。

这是属性绑定到标签的方式

this.lblWorkPlace.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.appStateBindingSource, "ResourceName", true));

我也尝试将相同的属性绑定到文本框和文本框更新正确

this.lTextEdit1.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.appStateBindingSource, "ResourceName", true));

可能出了什么问题?

更新

这是我的“状态”类

public class AppState: INotifyPropertyChanged
{
     private static Operation _activeTask;


    private static AppState _instance;


    public static AppState Instance
    {
        get => _instance ?? (_instance = new AppState());
    }


    public Operation ActiveTask
    {
        get => _activeTask;
        set
        {
            if (value != _activeTask)
            {
                _activeTask = value;
                RaisePropertyChanged("ResourceName");
            }
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    public void RaisePropertyChanged(string prop)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(prop));
    }

    public string ResourceName => ActiveTask?.Operacija?.acResursName.Trim() ?? "";
}


}

【问题讨论】:

  • 您希望标签文本如何更新,您是否在循环中使用它?
  • 提供此绑定的属性的代码在哪里?此外,您可能希望将 DataSourceUpdateMode.OnPropertyChanged 添加为 DataBindings 中的最终参数。
  • 我希望在属性文本更改时更新该标签,因为文本字段会更新但标签不会
  • LabelTextBox 的工作方式相同,没有蚂蚁问题。 (而且您可能知道 AppState 实例的 ActiveTask 属性一开始是 null ,一旦您将 Operation 分配给该属性,标签/文本框就会更新。

标签: c# .net winforms data-binding


【解决方案1】:

问题是跨线程调用。应用程序没有更新 UI,也没有抛出任何异常

【讨论】:

    猜你喜欢
    • 2012-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多