有没有办法知道用户何时在C#windows窗体文本框中输入?
重新整理: 有没有办法知道用户何时在C#windows窗体文本框上停止输入几秒钟(可能是5秒)?
答案 0 :(得分: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);
}
}
答案 1 :(得分:0)
这是一个模糊的领域,正如其他人所指出的那样。但我发现这样做的最好方法就是
答案 2 :(得分:0)
您可以使用OnLostFocus
来判断用户的焦点何时离开文本框。
否则,您可以使用OnKeyPress
和一个计时器来判断自上次击键后多长时间。