您的位置:首页 > 其它

Winform -----TabControl 标签 画关闭按钮

2010-10-21 15:05 579 查看
this.tabControl.MouseDown += new MouseEventHandler(tabControl_MouseDown);

this.tabControl.DrawItem += new DrawItemEventHandler(tabControl_DrawItem);

private void tabControl_DrawItem(object sender, DrawItemEventArgs e)

{

try

{

Rectangle myTabRect = this.tabControl.GetTabRect(e.Index);

int CLOSE_SIZE = 10;

//先添加TabPage属性

e.Graphics.DrawString(this.tabControl.TabPages[e.Index].Text

, this.Font, SystemBrushes.Highlight, myTabRect.X + 2, myTabRect.Y + 2);

//再画一个矩形框

using (Pen p = new Pen(Color.Black))//自动释放资源

{

myTabRect.Offset(myTabRect.Width - (CLOSE_SIZE + 3), 2);

myTabRect.Width = CLOSE_SIZE;

myTabRect.Height = CLOSE_SIZE;

e.Graphics.DrawRectangle(p, myTabRect);

}

//画关闭符号

using (Pen objpen = new Pen(Color.Black))

{

//"/"线

Point p1 = new Point(myTabRect.X + 3, myTabRect.Y + 3);

Point p2 = new Point(myTabRect.X + myTabRect.Width - 3, myTabRect.Y + myTabRect.Height - 3);

e.Graphics.DrawLine(objpen, p1, p2);

//"/"线

Point p3 = new Point(myTabRect.X + 3, myTabRect.Y + myTabRect.Height - 3);

Point p4 = new Point(myTabRect.X + myTabRect.Width - 3, myTabRect.Y + 3);

e.Graphics.DrawLine(objpen, p3, p4);

}

e.Graphics.Dispose();

}

catch (Exception)

{

}

}

private void tabControl_MouseDown(object sender, MouseEventArgs e)

{

if (e.Button == MouseButtons.Left)

{

int x = e.X, y = e.Y;

int CLOSE_SIZE = 10;

//计算关闭区域

Rectangle myTabRect = this.tabControl.GetTabRect(this.tabControl.SelectedIndex);

myTabRect.Offset(myTabRect.Width - (CLOSE_SIZE + 3), 2);

myTabRect.Width = CLOSE_SIZE;

myTabRect.Height = CLOSE_SIZE;

//如果鼠标在区域内就关闭选项卡

bool isClose = x > myTabRect.X && x < myTabRect.Right

&& y > myTabRect.Y && y < myTabRect.Bottom;

if (isClose == true)

{

this.tabControl.TabPages.Remove(this.tabControl.SelectedTab);

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: