7
在試圖做一些更復雜的事情時,我碰到了一個我不太明白的行爲。TextChanged事件 - 爲什麼這不會導致無限循環?
假設下面的代碼處理textChanged事件。
private void textChanged(object sender, TextChangedEventArgs e)
{
TextBox current = sender as TextBox;
current.Text = current.Text + "+";
}
現在,輸入在文本框中的字符(比如A)將導致事件得到與最終文本絆倒兩次(添加兩個「+」 S)顯示的僅僅是一個+。
我的兩個問題是,爲什麼事件只發生兩次?爲什麼只有第一次穿過事件才能真正設置文本框的文本?
在此先感謝!
爲什麼一個似乎沒有多大意義的問題在4分鐘內就有3個upvotes?我不明白.... – 2010-05-24 15:55:00
...上漲到5票,然後回到3? hmmmmm ... – 2010-05-24 16:00:10
事件TextBox.TextChanged在TextBox.Text發生更改時引發。但是,示例代碼會在此通知期間更改文本,這會導致TextChanged的進一步升高,從而導致Text的新更改,這將會...... - >無限遞歸。
我不知道這個特殊情況是由TextBox類明確處理的 - 所描述的效果不會發生。相反,TextChanged只會被提升一次。我通過這個問題學到了一些東西,因此得到了提升。 – Matthias 2010-05-24 16:10:18