C# 文本框 TextChanged 延时触发
public partial class DelayTextBox : TextBox { #region private globals private System.Timers.Timer DelayTimer; // used for the delay private bool TimerElapsed = false; // if true OnTextChanged is fired. private bool KeysPressed = false; // makes event fire immediately if it wasn't a keypress #endregion #region object model // Delay property private int delayTime = 3000; public int DelayTime { get { return delayTime; } set { delayTime = value; } } #endregion #region ctor public DelayTextBox() { InitializeComponent(); // Initialize Timer DelayTimer = new System.Timers.Timer(delayTime); DelayTimer.Elapsed += new ElapsedEventHandler(DelayTimer_Elapsed); } #endregion #region event handlers void DelayTimer_Elapsed(object sender, ElapsedEventArgs e) { // stop timer. DelayTimer.Enabled = false; // set timer elapsed to true, so the OnTextChange knows to fire TimerElapsed = true; // use invoke to get back on the UI thread. this.Invoke(new DelayOverHandler(DelayOver), null); } #endregion #region overrides protected override void OnKeyPress(KeyPressEventArgs e) { if (!DelayTimer.Enabled) DelayTimer.Enabled = true; else { DelayTimer.Enabled = false; DelayTimer.Enabled = true; } KeysPressed = true; base.OnKeyPress(e); } protected override void OnTextChanged(EventArgs e) { // if the timer elapsed or text was changed by something besides a keystroke // fire base.OnTextChanged if (TimerElapsed || !KeysPressed) { TimerElapsed = false; KeysPressed = false; base.OnTextChanged(e); } } #endregion #region delegates public delegate void DelayOverHandler(); #endregion #region private helpers private void DelayOver() { OnTextChanged(new EventArgs()); } #endregion }
作者:阿笨
【官方QQ一群:跟着阿笨一起玩NET(已满)】:422315558
【官方QQ二群:跟着阿笨一起玩C#(已满)】:574187616
【官方QQ三群:跟着阿笨一起玩ASP.NET(已满)】:967920586
【官方QQ四群:Asp.Net Core跨平台技术开发(可加入)】:829227829
【官方QQ五群:.NET Core跨平台开发技术(可加入)】:647639415
【网易云课堂】:https://study.163.com/provider/2544628/index.htm?share=2&shareId=2544628
【腾讯课堂】:https://abennet.ke.qq.com
【51CTO学院】:https://edu.51cto.com/sd/66c64
【微信公众号】:微信搜索:跟着阿笨一起玩NET