我创建了一个带有标准Windows窗体计时器和标签的UserControl。标签将由hh:mm:ss格式的计时器每秒刷新一次,使用backgroundworker。标签不会更新,因为只有UI线程可以执行此操作。所以我已经使用这段代码来实现它:
delegate void RefreshTimerCallback(string text);
private void RefreshTimer(string text)
{
if (lblTiming.InvokeRequired)
{
RefreshTimerCallback d = RefreshTimer;
Invoke(d, text);
}
else
{
lblTiming.Text = text;
}
}
除了一件事,现在一切都很好。似乎UserControl总是“接管”#39;焦点。我的意思是,当我将UserControl放在带滚动条的面板上时,当我向下滚动时,它总是向上滚动到UserControl。
问题是,是否有更好的方法来更新UserControl中的标签?或者更好,我可以告诉UserControl不要接管焦点吗?