xtraTabControl通常使用
1、设置标签页上显示关闭按钮ClosePageButtonShowMode选项选择InActiveTabPageHeaderAndOnMouseHover
将tabPage删减至一个,命名为xtp1,Text为“编辑1”,增加一个xtpADD,text为“+”
2、添加一个标签页面
private void button_Click(object sender, EventArgs e) {//xtraTabControl1增加一个页面 XtraTabPage page = new XtraTabPage(); int NextNumber= GetNewPageName(xtraTabControl1); if (NextNumber > 100) { MessageBox.Show("不支持再多的标签页"); return; } page.Name = "xtp" + NextNumber.ToString(); page.Text = "查询" + NextNumber.ToString(); this.xtraTabControl1.TabPages.Add(page); this.xtraTabControl1.SelectedTabPage = page; }
private int GetNewPageName(XtraTabControl xtc) { var test = xtc.TabPages; List<int> list= xtc.TabPages.Where(x => x.Text.StartsWith("查询")).ToList().Select(y =>int.Parse(y.Text.Replace("查询",""))).ToList(); int result = list.Max();//如果执行的顺利,则找到最大的值,如果执行不顺利则result依旧是0 return result + 1; }
3、关闭标签
private void xtraTabControl1_CloseButtonClick(object sender, EventArgs e) { ClosePageButtonEventArgs arg = e as ClosePageButtonEventArgs; if (xtraTabControl1.TabPages.Count > 1) { if (DialogResult.Yes == MessageBox.Show("确认需要关闭当前查询?", "再次确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1)) { //如果关掉的是当前界面 选中前一个界面 如果关掉的不是当前界面 则选中的内容不变。 if (xtraTabControl1.SelectedTabPage.Equals(arg.Page as XtraTabPage)) xtraTabControl1.SelectedTabPageIndex = xtraTabControl1.SelectedTabPageIndex >= 1 ? xtraTabControl1.SelectedTabPageIndex - 1 : 0; xtraTabControl1.TabPages.Remove(arg.Page as XtraTabPage); //方法1 删除 //(arg.Page as XtraTabPage).PageVisible = false;//方法2 隐藏 } } }
==================================================
以上的方法已经能够满足通常的需要,但是还是需要一个【增加Tab页】的按钮,如果能将这个按钮藏起来,就会好看很多。
于是我在标签列表的最右边,能够创建一个tab头为【+】的tab页,这一页永远不会被打开,相当于在这个tab头上增加了这么个按钮。
在页面的引导性上用户也很容易理解,如下图:
那么只要修改其中部分内容即可。
置标签页上显示关闭按钮ClosePageButtonShowMode选项选择 InActiveTabPageHeader
修改xtraTabControl1的SelectedPageChanged事件
private void xtraTabControl1_SelectedPageChanged(object sender, TabPageChangedEventArgs e) { if (xtraTabControl1.SelectedTabPage.Name == "xtpADD") { //添加插入一个页,然后选择新插入的这个页 XtraTabPage page = new XtraTabPage(); int NextNumber = GetNewPageName(xtraTabControl1); if (xtraTabControl1.TabPages.Count >3) { MessageBox.Show("不支持再多的标签页"); this.xtraTabControl1.SelectedTabPageIndex = xtraTabControl1.TabPages.Count - 2; return; } page.Name = "xtp" + NextNumber.ToString(); page.Text = "查询" + NextNumber.ToString(); //先删除最后的【+】页,插入所需的页面后,再把【+】页添加进来 XtraTabPage lastPage=this.xtraTabControl1.TabPages.Last(); this.xtraTabControl1.TabPages.Remove(lastPage); this.xtraTabControl1.TabPages.Add(page); this.xtraTabControl1.SelectedTabPage = page; this.xtraTabControl1.TabPages.Add(lastPage); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人