ユーザーがいつC#windowsフォームでテキストボックスを入力したかを知る方法はありますか?ユーザーがいつC#windowsで入力を完了したかを知る方法textbox
Rephrase: C#ウィンドウでユーザーが数秒間(多分5秒間)タイピングをやめるのを知る方法はありますか?
ユーザーがいつC#windowsフォームでテキストボックスを入力したかを知る方法はありますか?ユーザーがいつC#windowsで入力を完了したかを知る方法textbox
Rephrase: C#ウィンドウでユーザーが数秒間(多分5秒間)タイピングをやめるのを知る方法はありますか?
完全なタイピングを考慮することができますユーザーのフォーカスがテキストボックスを離れるとき。
それ以外の場合は、OnKeyPress
とタイマーを使用して、最後のキーストロークからの経過時間を知ることができます。
ありがとう、私は最後のキーストロークからどれくらいの時間を伝えるためにOnKeyPressとタイマーを使用しています。それは本当に動作します:) –
それはうまく働いてうれしいです。幸せに助けてください: - D – David
これは、他の人が触れたように、あいまいな領域です。しかし、私はこれを行うに発見した最良の方法は、(どのように多くの不活動の秒あなたは彼らが行わタイピング考えるまで)
OnLostFocus
を使用することができますいずれかTextBoxを拡張し、TextChangedイベントをリッスンしてタイマーを操作することで発生する新しいイベント "TextChangedComplete"を作成します。ここに完全なコードがあります。
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);
}
}
「完了した入力」を定義します。書き込みを止めたり、テキストボックスがフォーカスを失ったりしますか? –
何をしたいですか?おそらくkeydownイベントなどで入力を確認してください。 – rene
ESPしかし、私はそれが存在するかどうかはわかりません。 ...まだこれが完了するのを知るのを待っているので、私は自分でenterを押すでしょう。 –