我正在使用VS express 2010和.Net 4.0。
我将DataGridView绑定到实现INotifyPropertyChanged的BindingList。
更改的值正常反映在网格上,但在使用Threading.Timers执行更新作业时失败。
如下图所示,该值已更新但未显示,除非单元格失去焦点,如“最小化和最大化”或“网格被其他窗口覆盖”或“选择单元格”。
http://i.minus.com/jViIpKKeNNRrB.PNG
我是新手。我曾经搜索过,我相信threading.timer在更新UI时很糟糕。但就我而言,我只是更新了价值。
我厌倦了玩弱线程。任何其他轻量级计时器的建议将不胜感激!谢谢。
答案 0 :(得分:2)
更新UI时Threading.Timer
并非“坏”,它只是在与UI线程不同的线程上触发其事件,并且因为UI必须在UI线程上更新,否则您遇到了困难。
您需要在UI线程上重新Invoke
更新。
最简单的方法是:
myControl.Invoke((Action)(() =>
{
myControl.Text = "Hello";
}));
显然将您的代码替换为我的示例。
让我知道这是否有效。