WinForms TabControl - 添加新标签按钮(+)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WinForms TabControl - 添加新标签按钮(+)相关的知识,希望对你有一定的参考价值。
如何在Windows窗体应用程序中向+
添加TabControl
按钮。以下是WPF的答案。但我想在WinForms应用程序中使用它?
我将添加一个新的TabPage,然后将标题设置为“+”,将其名称设置为newTabPage并为TabControl的SelectedIndexChanged添加一个事件。然后你只是检查一下
tabcontrol.SelectedTab == newTabPage
如果是这种情况你可以创建一个新的TabPage,将其插入tabControl并将其设置为SelectedTab,如:
tabControl.TabPages.Insert(tabControl.TabPages.Count - 1, createdTabPage);
tabControl.SelectedTab = createdTabPage;
您可以在控件选项卡的末尾添加一个新选项卡,并将其文本设置为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的支持。
+
是一个解决方案。
创建一个标签为“+”的选项卡,并使用“tabControl1_Selecting”事件和代码:
X
根据@Reza Aghaei的一些改进
- 创建一个新表单并将其命名为formTab(将表单边框样式设置为none)。
- 设置formTab的控件(这将是新选项卡中设置的控件)。
- 返回tabcontrol并添加一个新选项卡,将其命名为“+”(确保此选项卡是tabcontrol的结尾)。
现在输入以下代码:
if(e.TabPageIndex==tabControl1.TabPages.Count-1)
tabControl1.TabPages.Insert(tabControl1.TabPages.Count - 1,"tab"+e.TabPageIndex);
希望能帮助到你!
以上是关于WinForms TabControl - 添加新标签按钮(+)的主要内容,如果未能解决你的问题,请参考以下文章
.Net WinForms TabControl Steals 专注于表单激活