winform 做类似IE那种选项卡

时间:2020-12-17 15:07:25
winform 做一个类似IE选项卡的那种,每个选项卡旁边有个关闭按钮,而不是在最右边出现关闭按钮。

WeifenLuo.WinFormsUI.Docking.DockContent 这个控件就是在最右边出现。

麻烦各位高手帮我解决下。

如果有类似第三方控件。发我邮箱。netwyt@qq.com


11 个解决方案

#1


xtreme toolkit pro

里面就有一个例子,叫 IE7。

#2


xtreme toolkit pro 这个收费的。有没有免费免费的?
想截个图给大家看,但是要网络链接,不知道大家理解我的意思没。

麻烦各位大虾帮帮忙。

#3


DevComponents.DotNetBar.TabControlPanel + DevComponents.DotNetBar.TabItem

#4


用TabControl稍微一改就行
在画面上把TabControl的TabPages清空

 TabPage tp = new TabPage();
 tp.Name = "tap1";
 tp.Text = "tap1" + "   X";

加了一个  X  ,这个  X就充当关闭按钮。

 tabControl1.TabPages.Add(tp);
 tabControl1.SelectedTab = tp;



#5


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            TabPage tp = new TabPage();
            tp.Name = "tap1";
            tp.Text = "tap1" + "   X";

            tabControl1.TabPages.Add(tp);
            tabControl1.SelectedTab = tp;
        }

        private void tabControl1_MouseClick(object sender, MouseEventArgs e)
        {
            if (tabControl1.SelectedIndex >= 0)
            {
                if (e.Button == MouseButtons.Left)
                {
                    Rectangle rct = tabControl1.GetTabRect(tabControl1.SelectedIndex);
                    Size charWidth = TextRenderer.MeasureText("X", tabControl1.Font);
                    int w = rct.X + rct.Width - e.X - 2;
                    if (w <= charWidth.Width)
                    {
                        if (tabControl1.SelectedTab != null)
                        {

                            tabControl1.TabPages.Remove(tabControl1.SelectedTab);
                        }
                    }
                }
            }
        }
    }
}

#6


tabControl1_MouseClick
在鼠标单击中找到 X

#7


kkxxllasasas 你好,有没有更美观一点的。或是添加个图片的?

我先试试你发的那段代码,非常感谢。

#8


谢谢kkxxllasasas,你的方法可以,只是不够美观,还是有一些缺陷。但还是谢谢你。

#9


工具箱里边 ToolStripMenu好像里边有这个,你要不去找找 打包的都有

#10


自绘TabControl[align=center]*****************************************
本内容使用 CSDN小秘书回复
每天回帖即可得10分可用分!
*****************************************[/align]

#11


引用 7 楼 jiaojiba2010 的回复:
要显示在主窗体的axSuperMap1上代码也是这么写吗?


5楼的思路是对的,觉得不太好看可以参考
http://www.csharpwin.com/csharpresource/1821.shtml

#1


xtreme toolkit pro

里面就有一个例子,叫 IE7。

#2


xtreme toolkit pro 这个收费的。有没有免费免费的?
想截个图给大家看,但是要网络链接,不知道大家理解我的意思没。

麻烦各位大虾帮帮忙。

#3


DevComponents.DotNetBar.TabControlPanel + DevComponents.DotNetBar.TabItem

#4


用TabControl稍微一改就行
在画面上把TabControl的TabPages清空

 TabPage tp = new TabPage();
 tp.Name = "tap1";
 tp.Text = "tap1" + "   X";

加了一个  X  ,这个  X就充当关闭按钮。

 tabControl1.TabPages.Add(tp);
 tabControl1.SelectedTab = tp;



#5


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            TabPage tp = new TabPage();
            tp.Name = "tap1";
            tp.Text = "tap1" + "   X";

            tabControl1.TabPages.Add(tp);
            tabControl1.SelectedTab = tp;
        }

        private void tabControl1_MouseClick(object sender, MouseEventArgs e)
        {
            if (tabControl1.SelectedIndex >= 0)
            {
                if (e.Button == MouseButtons.Left)
                {
                    Rectangle rct = tabControl1.GetTabRect(tabControl1.SelectedIndex);
                    Size charWidth = TextRenderer.MeasureText("X", tabControl1.Font);
                    int w = rct.X + rct.Width - e.X - 2;
                    if (w <= charWidth.Width)
                    {
                        if (tabControl1.SelectedTab != null)
                        {

                            tabControl1.TabPages.Remove(tabControl1.SelectedTab);
                        }
                    }
                }
            }
        }
    }
}

#6


tabControl1_MouseClick
在鼠标单击中找到 X

#7


kkxxllasasas 你好,有没有更美观一点的。或是添加个图片的?

我先试试你发的那段代码,非常感谢。

#8


谢谢kkxxllasasas,你的方法可以,只是不够美观,还是有一些缺陷。但还是谢谢你。

#9


工具箱里边 ToolStripMenu好像里边有这个,你要不去找找 打包的都有

#10


自绘TabControl[align=center]*****************************************
本内容使用 CSDN小秘书回复
每天回帖即可得10分可用分!
*****************************************[/align]

#11


引用 7 楼 jiaojiba2010 的回复:
要显示在主窗体的axSuperMap1上代码也是这么写吗?


5楼的思路是对的,觉得不太好看可以参考
http://www.csharpwin.com/csharpresource/1821.shtml