再会!
我有这个问题,文本框中的每个文本更改,datagriview 中的选定项目都应该复制它的值。我有这段代码,但是当我在文本框中输入(比如非常快)时它会滞后。
有没有更好的方法来做到这一点而没有滞后?
请帮忙...
这是我到目前为止所拥有的:
private void txtText_TextChanged(object sender, EventArgs e)
{
DataGridView1[2, pos].Value = txtText.Text;
}
再会!
我有这个问题,文本框中的每个文本更改,datagriview 中的选定项目都应该复制它的值。我有这段代码,但是当我在文本框中输入(比如非常快)时它会滞后。
有没有更好的方法来做到这一点而没有滞后?
请帮忙...
这是我到目前为止所拥有的:
private void txtText_TextChanged(object sender, EventArgs e)
{
DataGridView1[2, pos].Value = txtText.Text;
}
您可能需要限制处理的事件数量。您的要求是否允许您改用TextBox ValidatedorLostFocus事件?
如果不是,您可以查看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();
}
您可以使用该txtText_KeyPress事件并查看用户是否按下了enter键(键码 = 13)。