clu*_*ter 6 c# tabs tabcontrol button winforms
如何在Windows窗体应用程序中添加+
按钮TabControl
.这是WPF的答案.但我想在WinForms应用程序中使用它?
小智 6
我将添加一个新的TabPage,然后将标题设置为"+",将其名称设置为newTabPage并为TabControl的SelectedIndexChanged添加一个事件.然后你只是检查一下
tabcontrol.SelectedTab == newTabPage
Run Code Online (Sandbox Code Playgroud)
如果是这种情况你可以创建一个新的TabPage,将其插入tabControl并将其设置为SelectedTab,如:
tabControl.TabPages.Insert(tabControl.TabPages.Count - 1, createdTabPage);
tabControl.SelectedTab = createdTabPage;
Run Code Online (Sandbox Code Playgroud)
您可以在控件选项卡的末尾添加一个新选项卡,并将其设置为+
,然后:
然后你将有一个像下面的选项卡控件.为了有更大的选项卡按钮,我已经为控件应用了填充.
Hanlde单击"最后一个"选项卡
您可以处理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;
}
}
Run Code Online (Sandbox Code Playgroud)
防止最后一个标签的选择
要防止选择最后一个选项卡,您可以处理Selecting
控制事件并检查选择选项卡是否为最后一个选项卡,取消该事件:
private void tabControl1_Selecting(object sender, TabControlCancelEventArgs e)
{
if (e.TabPageIndex == this.tabControl1.TabCount - 1)
e.Cancel = true;
}
Run Code Online (Sandbox Code Playgroud)
调整标签的宽度
要调整选项卡宽度并让最后一个选项卡具有较小的宽度,您可以处理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);
}
Run Code Online (Sandbox Code Playgroud)
注意
您可以简单地将逻辑封装在派生中,TabContol
并创建一个支持添加选项卡的自定义选项卡控件.
此外,您可以简单地使控件所有者绘制和处理选项卡绘制,以在选项卡上显示+
图标和X
图标.作为示例,您可以在此处查看实现.
使用所有者绘制选项卡时,可以添加对RTL的支持.这是一个解决方案.
创建一个带有标签“+”的选项卡,并使用“tabControl1_Selecting”事件,代码如下:
if(e.TabPageIndex==tabControl1.TabPages.Count-1)
tabControl1.TabPages.Insert(tabControl1.TabPages.Count - 1,"tab"+e.TabPageIndex);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21128 次 |
最近记录: |