编程选中TabControl已存在的TabPage时显示空白页怎么解决?
问题原因
- 你在
else分支中声明的tp是新创建的本地实例,从未添加到TabManager.TabPages集合中,用tp.Name作为索引去查找集合元素时,根本匹配不到任何已存在的TabPage,最终TabManager.TabPages[tp.Name]返回null,将SelectedTab赋值为null自然会显示空白页。 - 原有遍历逻辑仅标记是否存在匹配标题的TabPage,没有保存匹配到的TabPage实例,导致找到对应页后也无法正确引用。
- 新建
TabPage时传入的TabCaption仅会赋值给Text属性,Name属性会使用默认值,即使后续用名称索引也会存在匹配错误的问题。
修复方案
优化逻辑,遍历过程中直接记录匹配到的TabPage实例,不存在时再新建,无需单独判断TabCount是否为0,修改后代码如下:
private void AddControls(UserControl uc, string TabCaption) { TabPage targetTab = null; // 遍历查找匹配标题的TabPage foreach (TabPage tp in TabManager.TabPages) { if (tp.Text == TabCaption) { targetTab = tp; break; } } if (targetTab == null) { // 未找到则新建标签页并绑定控件 targetTab = new TabPage(TabCaption); uc.Dock = DockStyle.Fill; targetTab.Controls.Add(uc); TabManager.TabPages.Add(targetTab); } // 直接选中目标标签页 TabManager.SelectedTab = targetTab; }
内容的提问来源于stack exchange,提问作者AER 4AF
相关产品推荐
相关产品推荐

