C# tabControl 关闭窗口的界面切换问题。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# tabControl 关闭窗口的界面切换问题。相关的知识,希望对你有一定的参考价值。

tabControl 里面有10个tabpage。 关闭一个后,会跳转到第一个,
希望跳转到第九个,第八个的这种,
现在的情况是,关闭最后一个后,在到第一个,如果要到最后一个还是会到第一个闪烁一次在到最后一个,
如何让这个关闭后,到最后一个。比如(10个,关闭第五个,跳转到第九个)。

参考技术A 先切换Page再Remove不就行了。。。

if (this.tabControl1.TabCount > 1)

this.tabControl1.SelectedIndex = this.tabControl1.TabCount - 1;

this.tabControl1.TabPages.Remove((TabPage)button1.Parent);

测试绝对可行
测试代码:
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)

System.Diagnostics.Debug.Print(this.tabControl1.SelectedIndex.ToString());
参考技术B tabControl1.SelectedIndex = tabControl1.TabCount - 1;追问

双击关闭后,tabControl1.SelectedIndex=0了。把这个改为其他的index 就会有闪烁刷新次

追答

你到底是ASP.NET还是窗体应用程序?

追问

winform的
this.tabControl1.TabPages.Remove(this.tabControl1.SelectedTab);
这个执行完后 tabControl1.SelectedIndex就为0了

追答

执行完后再执行一下这个代码不可以吗/?
tabControl1.SelectedIndex = tabControl1.TabCount - 1;

参考技术C private void button1_Click(object sender, EventArgs e)

this.tabControl1.TabPages.Remove(this.tabControl1.SelectedTab);
this.tabControl1.SelectTab(this.tabControl1.TabCount - 1);
追问

这个是不可以的,你看下浏览器里面的,关闭一个标签后,会到最后面一个标签,但是这个会产生个刷新闪烁,先跳转到第一个,在到最后一个的。
在数据多了后 会非常明显

追答

我发的是在winform下的,web我不太清楚,但是看你的效果肯定是先刷新了界面 然后再对tablecontrol赋值了,你可以考虑下刷新前赋值,希望能够帮助到你。

追问

这个是winform下面的,我现在就想实现个 功能,比如tabcontrol 里面有10个 tabpage,关闭除了第一之外的任何一个 调用 this.tabControl1.SelectTab() 这个方法 的时候,都不要执行第一个一次在跳转到最后一个

追答

我试过了,winform下不会跳到第一个,源码发上来看看吧,应该跟你数据加载的地方有关。

追问

this.tbCenter.TabPages.RemoveAt(tbCenter.SelectedIndex);
if (this.tbCenter.SelectedIndex == 0)
this.tbCenter.SelectedIndex = tbCenter.TabCount - 1;

追答

自己试了一下,每当你REMOVE后,SelectedIndex会自动变为0,所以会产生你的这种情况,解决方法为在remove事件触发时,先更改SelectedIndex,可以解决这个问题。你可以试试,代码如下:
private void button1_Click(object sender, EventArgs e)

this.tabControl1.TabPages.Remove(this.tabControl1.SelectedTab);


private void tabControl1_ControlRemoved(object sender, ControlEventArgs e)

this.tabControl1.SelectTab(this.tabControl1.TabCount - 1);

本回答被提问者采纳

WPF 切换窗口 闪屏

  最近在项目需要从主界面切换到配置界面,配置界面主要是一个TabControl,有几个不同的配置界面。之前刚刚创建项目的时候,从主界面切换到配置界面是没有闪屏现象,后来才发现有闪屏现象,不过一直没有时间解决,今天才空闲时间来查找原因。

  原因就是配置界面的背景使用的是UI提供的图片,而且我只直接在自定义控件中将UserControl的Backgroud.ImageBrush设置为相对的图片路径。

1 <UserControl ....>
2     <UserControl.Background>
3        <ImageBrush ImageSource ="..."/>
4     </UserControl.Background>
5 </UserControl >

   后面直接在TabControl的Template直接用Image控件来加载背景图片,然后就可以了。

   没有想到这么一个大坑,忙了一天,现在才找到原因。

以上是关于C# tabControl 关闭窗口的界面切换问题。的主要内容,如果未能解决你的问题,请参考以下文章

C# Winform多个窗体界面间的切换

c# 如何切换窗口

WPF 切换窗口 闪屏

C# winform 自定义的tabControl切换tab之后 重绘tab里的每一个自定义 控件,加载速度十分慢,求解

c# winform 点击按钮切换tabcontrol标签

C# WinForm怎么用程序切换tabcontrol?