如何知道用户何时在C#窗体上输入文本框

Jef*_*ala 0 c# textbox windows-forms-designer

有没有办法知道用户何时在C#windows窗体文本框中输入?

改写:有没有办法知道用户何时在C#windows窗体文本框上停止输入几秒钟(可能是5秒)?

cra*_*ock 5

扩展TextBox并创建一个新事件"TextChangedComplete",它通过监听TextChanged事件和操作Timer来触发.这是完整的代码.

public class TextBox : System.Windows.Forms.TextBox
{
    private System.Timers.Timer timer;

    public TextBox()
    {
        this.timer = new System.Timers.Timer(1000);
        this.timer.Elapsed += timer_Elapsed;
    }

    public TimeSpan TextChangedCompleteDelay
    {
        get { return TimeSpan.FromMilliseconds(this.timer.Interval); }
        set { this.timer.Interval = value.TotalMilliseconds; }
    }

    private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs args)
    {
        this.timer.Stop();
        this.BeginInvoke(new MethodInvoker(this.OnTextChangedComplete));
    }

    public event EventHandler<EventArgs> TextChangedComplete;

    protected void OnTextChangedComplete()
    {
        if (this.TextChangedComplete != null)
            this.TextChangedComplete(this, new EventArgs());
    }

    protected override void OnTextChanged(EventArgs args)
    {
        if (!this.timer.Enabled)
            this.timer.Start();
        else
        {
            this.timer.Stop();
            this.timer.Start();
        }

        base.OnTextChanged(args);
    }

    protected override void Dispose(bool disposing)
    {
        if (disposing)
        {
            if (this.timer != null)
                this.timer.Dispose();
        }

        base.Dispose(disposing);
    }
}
Run Code Online (Sandbox Code Playgroud)