【组件修改】winform某个tabcontrol控件的修改--加上关闭按钮

来源:互联网 发布:mysql日志文件在哪 编辑:程序博客网 时间:2024/05/16 00:28

【前言】

最近开始搞winform,要有一个美观大方的tabcontrol,并且可以关闭,偶然在网上的程序员之窗下载到一个,但是没有关闭按钮,所以我只能自己动手改装了。

我改装了两处地方,第一处,将close的图标绘制绘制出来--当鼠标在图标范围内则绘制选中样式的close按钮;

第二处:添加关闭事件,具体而言,当tabcontrol接收到点击事件时候,判断鼠标是不是在close范围,假如是,就调用remove方法去掉当前tab页面。


大概的代码如下:

                /*                 绘制关闭图标                 */                Bitmap oImage = CSharpWin.Properties.Resources.window_close;                Bitmap OImageSelected = CSharpWin.Properties.Resources.cross;                // g.DrawImage(oImage,new PointF(textRect.X+20,textRect.Height-20));                Rectangle closeRect = new Rectangle(tabRect.X + tabRect.Width - 12 - 9, tabRect.Y + tabRect.Height - 12 - 6, 16, 16);                if(closeRect.Contains(cusorPoint)){                g.DrawImage(OImageSelected, closeRect, 0, 0, 16, 16, GraphicsUnit.Pixel);                }                else{                    g.DrawImage(oImage, closeRect, 0, 0, 16, 16, GraphicsUnit.Pixel);                }                /*绘制结束*/

        /// <summary>        /// 这里是鼠标对tab的点击事件,当发生的时候,获取当前鼠标位置,假如在closebtn上面,那么就直接关闭。        /// </summary>        /// <param name="sender"></param>        /// <param name="agrs"></param>        private void init_click_handler(Object sender,MouseEventArgs agrs){                       TabControl t1 = (TabControl)sender;            int cSelectedIndex = t1.SelectedIndex;           // MessageBox.Show("您点击了我,鼠标位置:" + agrs.X + "  " + agrs.Y + " 当前选中的tab为:" +cSelectedIndex);            Rectangle rect1=  t1.GetTabRect(t1.SelectedIndex);          //  MessageBox.Show("当前选中的矩形信息为:left "+rect1.Left+",top "+rect1.Top+",width "+rect1.Width+",height "+rect1.Height+"");            Rectangle closeRect = new Rectangle(rect1.X + rect1.Width - 12 - 9, rect1.Y + rect1.Height - 12 - 6, 16, 16);            if (closeRect.Contains(new Point(agrs.X, agrs.Y))) {              // MessageBox.Show("在close按钮范围里面");                //--假如在close按钮里面,就关闭               // this.TabPages.RemoveAt(cSelectedIndex );                this.TabPages.Remove(this.TabPages[cSelectedIndex]);            }                                }

放心,我下面将项目源代码放出来,大家可以去下载。运行环境:vs2010,net4.0.

修改版tabcontrol

原创粉丝点击