如何刷新未显示的选项卡
Posted
技术标签:
【中文标题】如何刷新未显示的选项卡【英文标题】:How to refresh tab that are not shown 【发布时间】:2014-11-09 20:43:40 【问题描述】:我在 tabControl 上有 3 个 tabPages,每个 tabPage 都有一个图片框。
当我在 gridview 中选择一行时,它会从文件中加载图像,并且在选择时我想用图像刷新 3 个选项卡。问题是图片框仅在我切换 tabPage 时刷新,而不是在我更改图像时刷新。我尝试刷新、使控件无效或更新控件,但它不起作用。
我找到了:
“在标签页显示之前不会创建 TabPage 中包含的控件,并且在显示标签页之前不会激活这些控件中的任何数据绑定。”
如何解决这个问题。
【问题讨论】:
【参考方案1】:由于选项卡在被选中之前不会加载控件,因此一种常见的解决方法是以编程方式强制将焦点放在选项卡上。
-
将 tabControl 可见性设置为 false(以避免用户看到焦点变化)。
将焦点设置在 Tab2,然后是 Tab3,然后再回到 Tab1
再次将 tabControl 的可见性设置为 True。
唯一的缺点是,由于可见性的影响,用户会看到屏幕闪烁。如果您不使用可见性,用户将看到焦点从选项卡移动到选项卡,这更糟糕! :)
【讨论】:
感谢帮助。但是当我将 tabControl 可见性设置为 false 时它不起作用。【参考方案2】:您可以使用反射强制创建控件。例如
private void CreateControl(Control control)
var method = control.GetType().GetMethod("CreateControl", BindingFlags.Instance | BindingFlags.NonPublic);
method.Invoke(control, new object[] true );
【讨论】:
以上是关于如何刷新未显示的选项卡的主要内容,如果未能解决你的问题,请参考以下文章
如何仅刷新DEFAULT浏览器中的特定选项卡,其他选项卡不应刷新