処理されるイベントの数を制限する必要がある場合があります。TextBox
Validated
またはLostFocus
イベントを代わりに使用できる要件はありますか?
そうでない場合は、Rxを調べてTextChanged
イベントを調整できます。これは次のように実現できます。
IObservable<EventPattern<EventArgs>> observable = Observable.FromEventPattern(
txtText, "TextChanged").Throttle(TimeSpan.FromMilliseconds(500))
.Subscribe(ep=> DataGridView1[2, pos].Value = txtText.Text;);
でスロットルすることもできますTimer
。
Timer myTimer = new Timer();
myTimer.Interval = 500;
myTimer.Tick = OnTimerTick;
private void OnTimerTick(object o, EventArgs e)
{
myTimer.Stop();
DataGridView1[2, pos].Value = txtText.Text;
}
private void txtText_TextChanged(object sender, EventArgs e)
{
if(!myTimer.Enabled) myTimer.Start();
}