【问题标题】:How to refresh tab that are not shown如何刷新未显示的选项卡
【发布时间】:2023-03-14 09:10:01
【问题描述】:

我在 tabControl 上有 3 个 tabPages,每个 tabPage 都有一个图片框。

当我在 gridview 中选择一行时,它会从文件中加载图像,并且在选择时我想用图像刷新 3 个选项卡。问题是图片框仅在我切换 tabPage 时刷新,而不是在我更改图像时刷新。我尝试刷新、使控件无效或更新控件,但它不起作用。

我找到了:

“在标签页显示之前不会创建 TabPage 中包含的控件,并且在显示标签页之前不会激活这些控件中的任何数据绑定。”

如何解决这个问题。

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    由于选项卡在被选中之前不会加载控件,因此一种常见的解决方法是以编程方式强制将焦点放在选项卡上。

    1. 将 tabControl 可见性设置为 false(以避免用户看到焦点变化)。
    2. 将焦点设置在 Tab2,然后是 Tab3,然后再回到 Tab1
    3. 再次将 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 });
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-27
      • 2018-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多