就像这个例子一样:
someImage.Source = newSource;
someImage.refresh();
几天前在this帖子中,我回复了refresh(),我得到的反馈是黑客/滥用。我不明白为什么。
答案 0 :(得分:3)
MSDN有答案。
强制控件使其客户区无效并立即重绘自身和任何子控件。
使控件的整个表面无效并导致重绘控件。 [...] 调用Invalidate方法不会强制执行同步绘制
[强调我的]
关键是Refresh
与Invalidate
不同,强制进行同步调用,这有效地中断了表单中的默认事件流并切断了消息队列中的行。这可能会导致其他窗口消息(来自操作系统的事件)被延迟。
答案 1 :(得分:2)
如果您有响应式用户界面,则根本不需要Refresh
方法调用。设置Source
属性会创建一条消息,使控件的显示无效,因此在处理该消息时它将自动刷新。
只有当你的代码包含一个长时间运行的循环时,它才会长时间处理消息,你需要使用Refresh
方法。应该避免这种长时间运行的循环,因为它会导致用户界面无响应。
答案 2 :(得分:0)
通过简单的单词Refresh()
将重新加载UI,当某些更改
答案 3 :(得分:0)
因为如果正确使用它们,大多数gui框架会自动处理刷新/更新。
通过刷新,您可以解决症状(某些事情不会自动更新),而不是解决根本原因。
问题是Refresh通常会像病毒一样开始传播。你把它插在一个地方,突然你需要它在第二个地方,第三个等。