我可以将EventHandler添加到String吗?

mar*_*vin 0 c# events updates event-handling

我只是想知道当变量的值(如int,string等)发生变化时是否可以"触发"某些东西?

假设我有一个TextBox tb显示值的String MyString.所以我想做的是这样的:

MyString.ValueChanged += new EventHandler(UpdateTextBox);

public void UpdateTextBox(object sender, EventArgs e)
{
tb.Text = MyString;
}
Run Code Online (Sandbox Code Playgroud)

为了不必更新多行文本框.有没有办法做到这一点?谢谢 !

Mar*_*ell 10

一个string 永远不会改变.它是不可改变的(除非邪恶的代码在引擎盖下工作).如果MyString财产,那么你当然可以有一个MyStringChanged事件,挂钩到事件处理程序.

private string myString;
public string MyString {
    get { return myString; }
    set {
       if(myString != value) {
          myString = value;
          var handler = MyStringChanged;
          if(handler!=null) handler(this,EventArgs.Empty);
       }
    }
}
public event EventHandler MyStringChanged;
Run Code Online (Sandbox Code Playgroud)