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); } }