如何刷新未显示的选项卡

时间:2014-09-16 07:32:29

标签: c# winforms

我在tabControl上有3个tabPages,每个tabPage都有一个pictureBox。

当我在gridview中选择一行时,它会从文件中加载图像,在选择时我想要刷新带有图像的3个选项卡。问题是只有当我改变图像时切换tabPage时,pictureBox刷新。我试图刷新,无效或更新控件,但它不起作用。

我找到了:

  

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

如何解决这个问题。

2 个答案:

答案 0 :(得分:0)

您可以使用反射强制创建控件。例如

private void CreateControl(Control control)
{
    var method = control.GetType().GetMethod("CreateControl", BindingFlags.Instance | BindingFlags.NonPublic);
    method.Invoke(control, new object[] { true });
}

答案 1 :(得分:0)

由于选项卡不会加载控件直到选中它,因此一个常见的解决方法是以编程方式强制关注选项卡。

  1. 将tabControl可见性设置为false(以避免用户看到焦点更改)。
  2. 将焦点设置在Tab2上,然后设置Tab3并返回到Tab1
  3. 再次将tabControl的可见性设置为True。
  4. 唯一的缺点是,由于可见性的影响,用户将看到一眨眼的屏幕。如果您没有使用可见性,用户将看到焦点从标签移动到标签,这更糟糕! :)