0
我正在研究.Net緊湊框架。 根據要求我們有下拉和文本框; 當用戶從下拉菜單中選擇值時,選定的索引更改事件觸發,並在文本框中更新值。 現在假設用戶在文本框中輸入了值,那麼我們需要再次設置下拉選擇索引。Recurssion + .Net Compact框架
所以有了這個上面的場景它去了遞歸。
請幫我解決這個問題。
我正在研究.Net緊湊框架。 根據要求我們有下拉和文本框; 當用戶從下拉菜單中選擇值時,選定的索引更改事件觸發,並在文本框中更新值。 現在假設用戶在文本框中輸入了值,那麼我們需要再次設置下拉選擇索引。Recurssion + .Net Compact框架
所以有了這個上面的場景它去了遞歸。
請幫我解決這個問題。
兩個簡單的解決方案,來我的腦海:
一)一個標誌
使用一個簡單的變量_preventRecursion
指示哪些更新應該發生,例如像這樣:
private volatile bool _preventRecursion;
public void TextBox_TextChanged(...)
{
if (!_preventRecursion)
{
_preventRecursion = true;
try
{
// Do stuff to update the combo box.
}
finally
{
_preventRecursion = false;
}
}
}
添加與組合框的事件處理程序相同的代碼。
B)手動附加的事件處理程序
如果您手動附加事件處理程序的代碼,你可以當事件可控制:
public void TextBox_TextChanged(...)
{
comboBox1.SelectedIndexChanged -= selectedIndexChangedEventHandler;
try
{
// Do stuff to update the combo box
}
finally
{
comboBox1.SelectedIndexChanged += selectedIndexChangedEventHandler;
}
}
selectedIndexChangedEventHandler
將是一個適當的委託。