2014-10-03 54 views
0

我需要在C#Windows Forms應用程序中實現類似於TextBox字段的TextChanged功能。 就我而言TextChanged事件收集基於TextBox.Text的數據並將它們顯示在樹中。 由於在我的情況下收集和顯示太多的數據是非常耗時的,所以我在GUI中遇到了不必要的重繪導致的響應緩慢。 這當然是由TextChanged事件的設計,因爲它緩衝後來的按鍵,併爲每個字母運行TextChanged。我需要實現所有緩衝的TextChanged事件被跳過,結果只有最後一個被執行。其實當我輸入我需要改變這個如何加速C#從TextBox中形成全文搜索

l, lo, lon, long, longn, longna, longnam, longname 

這樣:

l, longname 
+0

你有沒有想過只無論是在擊鍵或僅在響應某一按鍵暫停後應用搜索。另一個想法就像Padawan Learner在搜索正在運行時所說的那樣忽視中介。 – 2014-10-03 21:59:50

回答

0

使用System.Windows.Forms.Timer定期檢查更改您文本框。

1

如果您只想減慢速度,請在計時器滴答處理程序中執行處理,但要啓用禁用的計時器。在文本更改上,禁用定時器,然後啓用它。確保定時器是一次性計時器(不重複)。這意味着處理將在文本更改後的計時器間隔之後立即執行,並且新文本更改將取消之前設置爲發生的更改。這是你想要的。當用戶鍵入時,處理將被一次又一次地延遲,直到用戶暫停鍵入。

0

驚訝的是洙簡單...

private void comboBox1_TextChanged(object sender, EventArgs e) 
{ 
    timer1.Start(); 
} 
private void timer1_Tick(object sender, EventArgs e) 
{ 
    doSearch(); 
    timer1.Stop(); 
}