我可以将EventHandler添加到String吗?

时间:2013-01-23 11:48:09

标签: c# events event-handling updates

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

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

MyString.ValueChanged += new EventHandler(UpdateTextBox);

public void UpdateTextBox(object sender, EventArgs e)
{
tb.Text = MyString;
}

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

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:4)

intstring等值是不可变的。他们无法改变。