C# WindowsForms-向选项卡页标题添加关闭按钮
我想在选项卡页面的标题中添加一个关闭按钮。因此,与浏览器选项卡一样,它可以从选项卡控件中删除。 提前感谢您抽出时间 编辑: 现在,我用鼠标中键来处理关闭操作,如下面的代码所示,但我想在tabPage标题上为我的用户提供一个友好的关闭按钮C# WindowsForms-向选项卡页标题添加关闭按钮,c#,windows-forms-designer,C#,Windows Forms Designer,我想在选项卡页面的标题中添加一个关闭按钮。因此,与浏览器选项卡一样,它可以从选项卡控件中删除。 提前感谢您抽出时间 编辑: 现在,我用鼠标中键来处理关闭操作,如下面的代码所示,但我想在tabPage标题上为我的用户提供一个友好的关闭按钮 private void tabControl1_MouseDown(object sender, MouseEventArgs e) { if (e.Button != System.Windows.Fo
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;
}
}
}
private void tabControl1\u MouseDown(对象发送方,MouseEventArgs e)
{
if(e.Button!=System.Windows.Forms.MouseButtons.Middle)
返回;
对于(int i=0;i
编辑
我发现我的问题重复了一遍,并且回答正确。默认的WF
TabControl
没有此功能
您可以在UI上有另一个按钮,使用该按钮可以删除当前选项卡
如果需要在选项卡上设置按钮,则可以重写“OnPaint”方法并自行绘制或使用其他选项卡控件
还有免费选项卡控件:
默认的WF
TabControl
没有此功能
您可以在UI上有另一个按钮,使用该按钮可以删除当前选项卡
如果需要在选项卡上设置按钮,则可以重写“OnPaint”方法并自行绘制或使用其他选项卡控件
还有免费选项卡控件:
您可以通过调用此过程(未测试)在每个选项卡上添加关闭按钮:
私有列表关闭按钮=新建列表()
私有void SetTabButtons()
{
//首先删除所有现有按钮
对于(int i=0;i您可以通过调用此过程(未测试)在每个选项卡上添加关闭按钮:
私有列表关闭按钮=新建列表()
私有void SetTabButtons()
{
//首先删除所有现有按钮
对于(int i=0;i到目前为止您尝试了什么?在这方面您遇到了哪些问题(是添加按钮、从TabPages集合中删除选项卡还是其他问题)?@Bobsamers我编辑了这个问题。这就是我为了达到这个目标所做的。我的问题是添加关闭按钮。请看一个例子,这是对的,我的朋友。这是一个重复的问题。我有责任在问问题之前搜索更多。请告诉我如何删除它。@Hans Passant到目前为止你做了什么?这是什么方面的您是否遇到问题(是添加按钮、从TabPages集合中删除选项卡还是其他问题)?@Bobsamers我编辑了这个问题。这就是我为了达到这个目标所做的。我的问题是添加关闭按钮。请看一个例子,这是对的,我的朋友。这是一个重复的问题。我有责任在问问题之前搜索更多。请告诉我如何删除它。@Hans Passant谢谢我的朋友。我知道,但我需要一些帮助以任何方式绘制。抱歉,但你没有在问题中写下这一点。你是对的,我的朋友。那是因为重写paint方法是我的最后手段。谢谢我的朋友。我知道,但我需要一些帮助来绘制它。抱歉,但你没有在问题中写下这一点。你是对的,我的朋友。那是因为重写paint方法是错误的我的最后手段。
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() ;
}