【问题标题】:Remove tab from tabpages from current tab从当前标签的标签页中删除标签
【发布时间】:2012-03-08 20:05:56
【问题描述】:

我的主窗体中有一个 tabcontrol,我也添加了用户控件。我希望能够从自身内部从集合中删除选项卡。也许在角落里放一个小x。你觉得我会怎么做呢?

这就是我向 TabPage 控件添加内容的方式。

DevExpress.XtraTab.XtraTabPage tabPage = new DevExpress.XtraTab.XtraTabPage() { Text = room.Name, Tag = roomView };

roomView.ParentTab = tabPage;
roomView.Dock = DockStyle.Fill;
roomView.Settings = Settings;

tabPage.Controls.Add(roomView);
tbRooms.TabPages.Add(tabPage);

【问题讨论】:

    标签: c# winforms devexpress


    【解决方案1】:

    我通常这样做的方法是添加一个按钮来关闭当前选定的选项卡。使用按钮上的点击事件运行代码:

    this.tbRooms.TabPages.RemoveAt(this.tabcontroller.SelectedIndex);
    

    您可能想选择关闭后关注哪个选项卡,此示例将选择控制器中的最后一个选项卡:

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

    我不确定如何在实际的选项卡控制器上添加 X 按钮,可能相当复杂。

    如果你想花点心思,你可以创建一个按钮来恢复关闭的选项卡,只需创建一个已删除的 TabPages 队列即可。在单击按钮时将选项卡出列并重新添加到您的选项卡控制器。

    【讨论】:

      【解决方案2】:

      把“x”按钮放在那里,给它分配一个事件,然后在点击事件中调用这样的东西:

      tbRooms.TabPages.Remove(tbRooms.SelectedTab);
      

      类似的东西应该可以。

      【讨论】:

        【解决方案3】:

        如果你命名你的标签,你也可以按键删除它们(即:名称)

        myTabPage.name = "WhateverTab";
        
        MyTabControl.TabPages.RemoveByKey("WhateverTab");
        

        或按索引

        MyTabControl.TabPages.RemoveAt(2);
        

        删除控件中的第三个选项卡

        【讨论】:

          【解决方案4】:

          改为使用 tabpage dispose 方法,该方法对静态和动态标签页都非常有效。

          【讨论】:

            【解决方案5】:

            以下选项很容易隐藏所需的选项卡,而不是删除特定选项的页面和控件。隐藏后无法选择,问题解决。

            this.viewRibbonPage1.Visible = false;

            【讨论】:

              【解决方案6】:

              我现在遇到了同样的问题,并通过使用 mouse_click 事件解决了它。当用户右键单击选项卡时,它将被删除。 这是我的参考Change SelectedTab of TabControl on MouseOver

              private void tabControl1_MouseClick(object sender, MouseEventArgs e)
                  {             
                      if (e.Button == System.Windows.Forms.MouseButtons.Right)
                      {
                          Rectangle mouseRect = new Rectangle(e.X, e.Y, 1, 1);
                          for (int i = 0; i < tabControl1.TabCount; i++)
                          {
                              if (tabControl1.GetTabRect(i).IntersectsWith(mouseRect))
                              {
                                  tabControl1.TabPages.RemoveAt(i);
                                  break;
                              }
                          }     
                      }   
                  }
              

              【讨论】:

                猜你喜欢
                • 2010-11-12
                • 1970-01-01
                • 2019-12-21
                • 2020-02-26
                • 2019-10-06
                • 2020-01-15
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多