【发布时间】:2015-12-10 14:43:47
【问题描述】:
这个问题是参考另一个问题,我的问题类似,但我寻求的帮助超出了我在这个答案中所读到的内容:
Raise an event whenever a property's value changed?
编辑:我想要完成的是应用程序内的全局消息“服务”,这样我就可以从应用程序内的不同位置写入消息变量并让用户界面(winform)启动事实上,该变量发生了一些变化,并且基于事件,我可以读取消息变量并将其内容显示给用户。我希望这现在更有意义。
首先,我是 C# 世界的新手,虽然我理解编写的代码是最被接受的答案,但我失败的地方是理解最终实现。如果我将此代码放在 .cs 文件中并在 winform 文件中使用命名空间,我该如何完成实现?就我而言,我想在 winform 文件中实现该类,以便我可以观察事件的发生。一旦事件发生,我会通过 winform 接口向用户写入一些信息。我想我需要使用字符串的“get”......但不确定实现会如何进行?如果这没有意义,我提前道歉,我试图把这一切拼凑起来。感谢您对此的任何帮助!
作为参考,我从提供的答案开始并为我的目的进行了更改:
public class Messaging : INotifyPropertyChanged
{
private string dLMessage;
protected void OnPropertyChanged(PropertyChangedEventArgs e)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
handler(this, e);
}
protected void OnPropertyChanged(string propertyName)
{
OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
}
public string DLMessage
{
get { return dLMessage; }
set
{
if (value != dLMessage)
{
dLMessage = value;
OnPropertyChanged("DLMessage");
OnDLMessageChanged(EventArgs.Empty);
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnDLMessageChanged(EventArgs e)
{
EventHandler handler = DLMessageChanged;
if (handler != null)
handler(this, e);
}
public event EventHandler DLMessageChanged;
}
【问题讨论】:
标签: c# winforms events inotifypropertychanged