如何刷新未显示的选项卡

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 );

【讨论】:

以上是关于如何刷新未显示的选项卡的主要内容,如果未能解决你的问题,请参考以下文章

如何使LayUI的Tab选项卡标签在切换时,自动刷新

如何刷新 Python TKINTER 选项卡中的内容?

仅刷新包含 iframe 的引导程序中的当前导航选项卡

如何仅刷新DEFAULT浏览器中的特定选项卡,其他选项卡不应刷新

当未显示架子选项卡时,如何在 Intellij 中恢复搁置的更改?

单击事件时,从 SQLite 自动刷新另一个选项卡