c# - Control.ValueChanged 触发时间偏移
问题描述
我有一些 C# 控件,例如NumericUpDown
orTextBox
并且想要以几秒的偏移量触发事件。过去,我使用Timer
. 我正在编写的代码使用 aBackgroundWorker
来完成此操作。在其他一些地方,我发现了正常的线程来构建这种行为。
例如,可能需要偏移量的原因是一种耗时的方法,该方法在 NumericUpDown 的每个 ValueChange 之后执行。如果用户在向下箭头上单击多次,则只有最后一次单击应该是重要的,因为这是用户最终想要的值。
我过去处理这个问题的方式如下
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
/*
* Designer Code
this.eventOffsetTimer.Interval = 500;
this.eventOffsetTimer.Tick += new System.EventHandler(this.eventOffsetTimer_Tick);
*/
eventOffsetTimer.Stop();
eventOffsetTimer.Start();
}
private void eventOffsetTimer_Tick(object sender, EventArgs e)
{
eventOffsetTimer.Stop();
//Time consuming stuff...
MessageBox.Show(numericUpDown1.Value.ToString());
}
我想知道最好的做法是在事件触发之前完成几秒钟的偏移量。是否有微软鼓励使用的内置方式?启动和停止计时器是一件简单的事情,但似乎有微软鼓励的方法。
解决方案
你应该使用.Restart()
. 它首先释放 Timer,然后再次启动它。
提示:您不需要使用.Stop()
with.Restart()
推荐阅读
- java - iText为复选框设置边框颜色和宽度,但它不起作用
- c - 如何与 C 标准输出通信?
- reactjs - react-query:useQuery 返回 undefined 并且组件不会重新渲染
- node.js - 对 React 应用程序中的每个组件进行单元测试真的很重要吗?
- android - 在 Flutter 或 React Native 上具有完整功能的 Native Camera?
- c++ - 什么特征使得 uninitialized_copy(_n) 可以被 copy(_n) 所取代?
- python - 在dash应用程序中,href可以实现到dcc.Dropdown中的值吗?
- python - 变量不随条目更新
- cookies - httpOnly cookie 不被存储或不发送到服务器
- react-native - 按下 onExitViro 按钮时 Viro 应用程序崩溃