如何在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
。+
是一个解决方案。创建一个标签为“+”的选项卡,并使用“tabControl1_Selecting”事件和代码:
X
根据@Reza Aghaei的一些改进
现在输入以下代码:
if(e.TabPageIndex==tabControl1.TabPages.Count-1)
tabControl1.TabPages.Insert(tabControl1.TabPages.Count - 1,"tab"+e.TabPageIndex);
希望能帮助到你!