我想在我的TabPages标题中添加一个关闭按钮。因此,与浏览器标签一样,它可以从TabControl中删除。 提前感谢您的时间。
编辑:
现在,我用中间点击处理结束,如下面的代码,但我想在tabPage标题上为我的用户提供一个友好的关闭按钮。
private void tabControl1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button != System.Windows.Forms.MouseButtons.Middle)
return;
for (int i = 0; i < MainTabControl.TabPages.Count; i++)
{
if (this.MainTabControl.GetTabRect(i).Contains(e.Location))
{
this.MainTabControl.TabPages.RemoveAt(i);
return;
}
}
}
修改
我发现我的问题已经重复并正确回答there。
答案 0 :(得分:0)
默认WF TabControl
没有此功能。
您的UI上可以有另一个按钮,您可以删除当前标签。
如果需要在选项卡上显示按钮,则可以覆盖“OnPaint”方法并自行绘制或使用antoher选项卡控件。
还有免费的标签控件:
答案 1 :(得分:0)
您可以通过调用此过程(未测试)在每个选项卡上添加关闭按钮:
private List<Button> closeButtons = new List<Button>()
private void SetTabButtons()
{
// first remove all existing buttons
for (int i=0;i<closeButtons.Count;i++) closeButtons[i].Parent=null ;
closeButtons.Clear() ;
// create the close buttons
for (int i=0;i<theTabControl.TabPages.Count;i++)
{
// add some spaces to tab text for the close button
theTabControl.TabPages[i].Text = theTabControl.TabPages[i].Text+" " ;
Rectangle rect=theTabControl.GetTabRect(i);
NewControl.Location = new System.Drawing.Point(X, Y);
Button b = new Button() ;
button.Text = "x" ;
button.AutoSize = true;
button.Location = new Point(rect.Right-button.Width-3,rect.top+3) ;
button.Parent = theTabControl ;
button.tag = i ;
button.Click +=CloseTab_ButtonClick ;
closeButtons.Add(button) ;
}
private void CloseTab_ButtonClick(object sender, EventArgs e)
{
int theTabPageIndex = (int)((Button)sender).Tag) ;
// remove the tabpage here
...
// reset the buttons
setTabButtons() ;
}