我已经检查了其他问题,因为我是C#的超时,但由于我是初学者,我真的不知道如何在我的代码中实现它们。它们看起来太复杂了。
我有一个文本框,我添加了一个点击事件。单击后,用户将文本框的内容复制到剪贴板。为了使复制过程对用户来说很明显,我改变了文本框的背面颜色。 复制内容后,我想将文本框的背面颜色恢复正常。所以我需要设置超时。
<input type="checkbox" ng-model="site.isChecked" id="item-f{{site.id}}"/>
如何设置超时?一个例子就是很棒。
答案 0 :(得分:2)
不确定这是否符合您的要求(初学者?),但这会通过使用Task
和调用文本颜色更改来执行简单的闪烁延迟之后:
textBox.BackColor = Color.MistyRose;
Task.Run(() =>
{
Thread.Sleep(200); // delay
this.BeginInvoke((MethodInvoker)delegate
{
textBox.BackColor = SystemColors.Window;
});
});
答案 1 :(得分:1)
使用Timer
并在Elapsed
事件中更改颜色。
快速而肮脏(未经测试)的代码可帮助您入门:
private void CopyToClipboard(TextBox textBox)
{
if (textBox.Text != "")
{
textBox.BackColor = System.Drawing.Color.MistyRose;
Clipboard.SetText(textBox.Text);
// Create a timer with a 1 second interval.
System.Timers.Timer aTimer = new System.Timers.Timer(1000);
// Hook up the Elapsed event for the timer.
aTimer.Elapsed += OnTimedEvent;
// Only tick one time
aTimer.AutoReset = false;
// Start timer
aTimer.Enabled = true;
}
}
private void OnTimedEvent(Object source, ElapsedEventArgs e)
{
this.BeginInvoke((MethodInvoker)delegate
{
textBox.BackColor = System.Drawing.SystemColors.Window;
});
}
答案 2 :(得分:1)
假设您有一个名为test的文本框,如果您使用的是Windows窗体,则可以在WPF中使用调度程序计时器或Windows窗体计时器。
test.Background = new SolidColorBrush(Colors.MistyRose);
Clipboard.SetText(test.Text);
var dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += new EventHandler((s, x) =>
{
dispatcherTimer.Stop();
test.Background = new SolidColorBrush(Colors.White);
});
dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, 200);
dispatcherTimer.Start();