Winfrom处理TextBox控件的输入事件防抖
工作中遇到了一个小需求,需要通过输入的内容筛选展示列表。为了避免在输入的过程中重复渲染界面,就需要做防抖处理,故在此记录下。
private Timer debounceTimer; private int debounceInterval = 500; // 防抖间隔时间,例如500毫秒 public DebounceTextBox() { debounceTimer = new Timer(debounceInterval); debounceTimer.Elapsed += OnDebounceTimerElapsed; debounceTimer.AutoReset = false; // 设置为false,因为我们只希望它触发一次 this.TextChanged += TextBox_TextChanged; } private void TextBox_TextChanged(object sender, EventArgs e) { debounceTimer.Stop(); // 停止计时器,如果正在运行的话 debounceTimer.Start(); // 重新启动计时器 } private void OnDebounceTimerElapsed(object sender, ElapsedEventArgs e) { if (this.InvokeRequired) // 确保在UI线程上调用处理程序 { this.Invoke((MethodInvoker)delegate { HandleDebouncedTextChange(); }); } else { HandleDebouncedTextChange(); } } private void HandleDebouncedTextChange() { // 在这里处理文本改变的逻辑,例如更新UI或调用其他方法 Console.WriteLine("文本改变: " + this.Text); }

浙公网安备 33010602011771号