WinForms TabControl - 添加新标签按钮(+)

问题描述 投票:6回答:4

如何在Windows窗体应用程序中向+添加TabControl按钮。以下是WPF的答案。但我想在WinForms应用程序中使用它?

c# winforms button tabs tabcontrol
4个回答
6
投票

我将添加一个新的TabPage,然后将标题设置为“+”,将其名称设置为newTabPage并为TabControl的SelectedIndexChanged添加一个事件。然后你只是检查一下

tabcontrol.SelectedTab == newTabPage 

如果是这种情况你可以创建一个新的TabPage,将其插入tabControl并将其设置为SelectedTab,如:

tabControl.TabPages.Insert(tabControl.TabPages.Count - 1, createdTabPage);
tabControl.SelectedTab = createdTabPage;

5
投票

您可以在控件选项卡的末尾添加一个新选项卡,并将其文本设置为qazxsw poi,然后:

  • 检查用户是否单击了最后一个选项卡,然后在其前面插入新选项卡。
  • 您应该阻止选择最后一个选项卡。
  • 您应该调整选项卡的宽度,让最后一个选项卡的宽度更小。

然后你将有一个如下所示的选项卡控件。为了有更大的标签按钮,我已经为控件应用了填充。

处理单击最后一个选项卡

您可以处理+MouseDown事件并检查最后一个选项卡矩形是否包含鼠标单击的点,然后在最后一个选项卡之前插入一个选项卡:

MouseClick

防止选择最后一个标签

要防止选择最后一个选项卡,您可以处理private void tabControl1_MouseDown(object sender, MouseEventArgs e) { var lastIndex = this.tabControl1.TabCount - 1; if (this.tabControl1.GetTabRect(lastIndex).Contains(e.Location)) { this.tabControl1.TabPages.Insert(lastIndex, "New Tab"); this.tabControl1.SelectedIndex = lastIndex; } } 控制事件并检查选择选项卡是否是最后一个选项卡,取消该事件:

Selecting

调整标签的宽度

要调整制表符宽度并让最后一个制表符具有较小的宽度,您可以处理qazxsw poi事件并将qazxsw poi发送到控件并指定制表符宽度允许的最小大小:

private void tabControl1_Selecting(object sender, TabControlCancelEventArgs e)
{
    if (e.TabPageIndex == this.tabControl1.TabCount - 1)
        e.Cancel = true;
}

注意

  • 您可以简单地将逻辑封装在派生的HandleCreated中,并创建一个支持添加选项卡的自定义选项卡控件。
  • 此外,您可以简单地使控件所有者绘制和处理选项卡绘制,以在选项卡上显示TCM_SETMINTABWIDTH图标和[DllImport("user32.dll")] private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp); private const int TCM_SETMINTABWIDTH = 0x1300 + 49; private void tabControl1_HandleCreated(object sender, EventArgs e) { SendMessage(this.tabControl1.Handle, TCM_SETMINTABWIDTH, IntPtr.Zero, (IntPtr)16); } 图标。作为示例,您可以看到实现TabContol
  • 使用所有者绘制选项卡时,可以添加对RTL的支持。 +是一个解决方案。

0
投票

创建一个标签为“+”的选项卡,并使用“tabControl1_Selecting”事件和代码:

X

0
投票

根据@Reza Aghaei的一些改进

  1. 创建一个新表单并将其命名为formTab(将表单边框样式设置为none)。
  2. 设置formTab的控件(这将是新选项卡中设置的控件)。
  3. 返回tabcontrol并添加一个新选项卡,将其命名为“+”(确保此选项卡是tabcontrol的结尾)。

你的表格应该看起来像这些:here Here

现在输入以下代码:

if(e.TabPageIndex==tabControl1.TabPages.Count-1)
    tabControl1.TabPages.Insert(tabControl1.TabPages.Count - 1,"tab"+e.TabPageIndex);

希望能帮助到你!

© www.soinside.com 2019 - 2024. All rights reserved.