CSharp_重写tabControl控件

合集下载

单文档-Tab Control 控件的使用

单文档-Tab Control 控件的使用

利用Tab Control控件设计一个分页表,见下图1. 建立一个MFC类型的基于FormView的单文档工程TabTest。

2. 把一个Tab Control控件拖到主对话框中,主对话框的ID为IDD_TABTEST_FORM,Language设为:Chinese(P.R.C)。

Tab Control的ID为IDC_TAB1。

3. 通过ClassWizard的设置一个与Tab Control相关的变量m_tab,类型为CTabCtrl。

4.建立两个对话框资源,设置其Style为Child,Borden为None。

因为想要不带标题栏和工具栏的对话框,因此我选择的是Dialog 资源中的IDD_FORMVIEW型的对话框。

它们的ID分别为IDD_Page1_FORMVIEW和IDD_Page2_FORMVIEW。

5.通过ClassWizard分为别两个对话框资源建立两个类CPage1和CPage2。

并建立CPage1和CPage2对应的两个两个对象:在CTabTestView中增加两个变量m_page1和m_page2,类型分别为CPage1和CPage2型。

6.在View的初始化函数OnInitialUpdate()函数中把CPage1和CPage2与TabControl关联起来,设置初始页面,保存页面地址,代码如下:void CTab_testView::OnInitialUpdate(){CFormView::OnInitialUpdate();GetParentFrame()->RecalcLayout();ResizeParentToFit();//为TabControl增加两个页面m_tab.InsertItem(0,"标签1");m_tab.InsertItem(1,"标签2');//创建两个对话框m_page1.Create(IDD_Page1_FORMVIEW,&m_tab);m_page2.Create(IDD_Page2_FORMVIEW,&m_tab);//获得IDC_TABTEST客户区大小CRect rc;m_tab.GetClientRect(rc);//调整子对话框在父窗口中的位置rc.top += 20;rc.bottom -=60;rc.left +=1;rc.right -=2;//设置子对话框尺寸并移动到指定位置m_page1.MoveWindow(&rc);m_page2.moveWindow(&rc);//设置隐藏和显示m_page1.ShowWindow(true);m_page2.ShowWindow(false);//设置默认选项卡m_tab.setCurSel(0);}7.在CPage1对话框中添加一个static text控件和edit text控件,在CPage2对话框添加一个edit text控件。

Csharp控件详解

Csharp控件详解

Csharp控件详解C#控件一览表前所未有的震撼(太详细了)C#控件及常用设计整理1、窗体1、常用属性(1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体。

(2)WindowState属性:用来获取或设置窗体的窗口状态。

取值有三种:Normal(窗体正常显示)、Minimized(窗体以最小化形式显示)和Ma某imized(窗体以最大化形式显示)。

(3)StartPoition属性:用来获取或设置运行时窗体的起始位置。

(4)Te某t属性:该属性是一个字符串属性,用来设置或返回在窗口标题栏中显示的文字。

(5)Width属性:用来获取或设置窗体的宽度。

(6)Height属性:用来获取或设置窗体的高度。

(7)Left属性:用来获取或设置窗体的左边缘的某坐标(以像素为单位)。

(8)Top属性:用来获取或设置窗体的上边缘的y坐标(以像素为单位)。

(9)ControlBo某属性:用来获取或设置一个值,该值指示在该窗体的标题栏中是否显示控制框。

值为true时将显示控制框,值为fale时不显示控制框。

(10)Ma某imizeBo某属性:用来获取或设置一个值,该值指示是否在窗体的标题栏中显示最大化按钮。

值为true时显示最大化按钮,值为fale时不显示最大化按钮。

(11)MinimizeBo某属性:用来获取或设置一个值,该值指示是否在窗体的标题栏中显示最小化按钮。

值为true时显示最小化按钮,值为fale时不显示最小化按钮。

(12)AcceptButton属性:该属性用来获取或设置一个值,该值是一个按钮的名称,当按Enter键时就相当于单击了窗体上的该按钮。

(13)CancelButton属性:该属性用来获取或设置一个值,该值是一个按钮的名称,当按Ec键时就相当于单击了窗体上的该按钮。

(14)Modal属性:该属性用来设置窗体是否为有模式显示窗体。

如果有模式地显示该窗体,该属性值为true;否则为fale。

VC中使用TABControl控件

VC中使用TABControl控件

VC中使用TABControl控件VC中使用TAB Control控件假如我现在有个SDI程序,View是Form View,想在上面放个Tab Control,包含两个Page。

现在让我们来看看应该怎样处理。

首先当然要增加一个Tab Control资源,然后利用Class Wizard,在View中增加一个Control变量。

接着建立两个对话框资源,别忘了把Style改为Child,Border 改为None。

然后就可以在上面加其他控件了。

接着利用Class Wizard,分别为这两个对话框建立两个类,比如CPage1和CPage2。

然后在View类头文件中,加入这两个对话框对象。

同时增加一个变量int m_CurSelTab,用了表明是哪个Page即将被切换。

为了避免用户在切换Tab时,程序对Tab Index的枚举,可以利用数组来做这个事情。

在View的初始化函数中需要把CPage1、CPage2和Tab Control关联起来,并保存页面地址,设置初始页面,等等。

void CTab_testView::OnInitialUpdate(){CFormView::OnInitialUpdate(); GetParent()-RecalcLayout(); ResizeParentToFit();//为Tab Control增加两个页面m_tab.InsertItem(0, _T(“First"));m_tab.InsertItem(1, _T("Second")); //创建两个对话框m_page2.Create(IDD___, m_tab); //设定在Tab内显示的范围CRect rc;m_tab.GetClientRect(rc);rc.top += 20;rc.bottom -= 8;rc.left += 8;rc.right -= 8;m_page1.MoveWindow(rc);m_page2.MoveWindow(rc);//把对话框对象指针保存起来pDialog = m_page1;pDialog = m_page2;//显示初始页面pDialog-ShowWindow(SW_SHOW);pDialog-ShowWindow(SW_HIDE);//保存当前选择m_CurSelTab = 0;}这里面需要注意的是,我用了一个CDialog指针数组来进行保存,数组的大小是Tab Control页面的个数,数组下标对应着每个页面的索引(这样方便快速存取)。

C sharp 控件大全-文档资料

C sharp 控件大全-文档资料


注意


可以在属性窗口设置属性,可以在代码中对属性进行设置。例如修改按钮背景 色,可以使用代码btnNew.BackColor=Color.Red; “&”号的使用。作为字符的前缀,通过Alt+相应的字符实现点击按钮的操作。例 如,btnNew.Text = “&Ok”; 一般使用默认的背景和前景控件颜色。


把按钮与DialogResult值DialogResult = DialogResult.OK;
单选按钮


使用RadioButton类封装,通常用来执行多选 一的操作。单选按钮通常分组使用,在一个组 中,只能有一个按钮处于选中状态。 单选按钮属性

除了Button中讨论的一些属性之外,单选按钮还比 较常用的属性还有:

在代码中通过Size属性设置控件大小


可以使用Bounds属性同时设置控件的位置和大小

btnNew.Bounds=new System.Drawing.Rectangle(10,10,100,100);
4)固定控件



使用Anchor属性使控件的位置相对于窗体某一边固定,改变窗体大小 时,控件的位置将会随之改变而保持这个相对距离不变。 使用属性窗口改变Anchor属性时,单击控件周围的上下左右的某个方 框使之变成深灰色,就表示控件相对于窗体这条边的距离固定 System.Windows.Forms命名空间中包含了一个枚举类型 AnchorStyles,其中定义了Anchor属性可以组合的16种不同属性值。 可以在代码中设置Anchor属性。
调整控件


对控件的调整,包括对齐、大小调整和间隔等等。 选中要调整的控件,使用“格式”菜单或是快捷菜单 中的命令或者工具栏上的格式按钮进行调整。在调整 控件的格式时,将按照基准控件对选择的多个控件进 行调整。 使用Ctrl键或Shift键选择多个控件,也可以拖动鼠标 选择一个控件范围,此时最先进入窗体的控件将作为 调整的基准控件。 被选中的控件中,基准控件周围是 白色方框,其他控件周围是黑色方框,如图。

vc中tab control的作用

vc中tab control的作用

vc中tab control的作用在VC++中,Tab Control控件的作用是在一个对话框或窗口中设置多个页面,每个页面代表一组控件。

当某个页面的标签被选中时,该页面内的控件就会被显示出来。

Control控件使得在有限的窗口空间内可以显示更多的信息,而且分类清晰。

同时,VC++提供了以文档/视图(Document/View)结构方式开发应用程序的简单方法,在文档中保存数据,在视图中显示数据。

无论是在SDI还是MDI的程序中,每个文档可以对应一个或多个是视图,但常常在显示数据时,需要将同一组数据用不同的视图显示,如列表视图、树型视图等,或者用一个视图显示一部分数据,用另一个视图显示另一部分数据,并且希望能在同一个显示区显示,在需要时进行切换。

将Tab Control控件运用到多视图的切换中,就形成了Tab View。

Tab View的实现方法有三种:1)利用CTabCtrl控件实现Tab View. CTabCtrl是MFC类库中定义的标准控件类,通过对消息TCN-SELCHANGE的处理以及运用函数GetCurSel()、SetCurSel()等,可以很好地完成响应、判断和设置标签控制的工作,因此利用CTabCtrl控件实现Tab View是较容易的方法。

2)利用CSheetCtrl标签选择窗口实现Tab View. 在使用CSheetCtrl时,需要将窗口的切换改为视图切换。

在标签窗口的消息处理函数中,处理切换标签页面的消息,根据不同的标签页面切换不同的视图对象。

3)利用静态分割窗口实现Tab View. 静态分割窗口是一种将窗口分割成多个部分的技术,每个部分可以显示不同的内容。

在实现Tab View时,可以使用静态分割窗口将窗口分割成多个标签页,每个标签页显示不同的内容。

命名规范_C (Sharp)

命名规范_C (Sharp)

命名规范_C(Sharp)1.命名规范a)类【规则1-1】使用Pascal规则命名类名,即首字母要大写。

【规则1-2】使用能够反映类功能的名词或名词短语命名类。

【规则1-3】不要使用“I”、“C”、“_”等特定含义前缀。

【规则1-4】自定义异常类应以Exception结尾。

【规则1-5】文件名要能反映类的内容,最好是和类同名。

b)类字段【规则2-1】用camel规则来命名类成员变量名称,即首单词(或单词缩写)小写。

【规则2-2】类字段变量名前可加“_”前缀。

【规则2-3】坚决禁止在普通变量前加“m_”(这是VC老命名规则)。

c)方法【规则3-1】方法名采用Pascal规则,第一个字符要大写。

【规则3-2】方法名应使用动词或动词短语。

【规则3-3】类中访问修饰符或功能相同的方法应该放在一起,且公共或实现接口的方法在前。

d)属性【规则4-1】使用名词定义属性,属性使用Pascal规则,首字符大写。

【规则4-2】属性和相应字段名称要关联,可以使用“重构”菜单来生成属性。

e)参数【规则5-1】参数采用camel规则命名,且首字符小写。

【规则5-2】使用描述性参数名称,参数名称应当具有最够的说明性。

【规则5-3】不要给参数加匈牙利语类型表示法的前缀。

【规则5-4】检查方法所有输入参数的有效性。

f)常量【规则6-1】只读常量使用Pascal命名规则,即首字母大写。

【规则6-2】枚举名使用Pascal规则命名,枚举成员本质属于常量,命名规则同上。

【规则6-3】枚举值从小到大顺序定义。

【规则6-4】静态字段或属性采用Pascal规则,即首字符大写。

g)接口【规则7-1】接口定义使用Pascal规则,且必须以大写“I”开头。

【规则7-2】接口名称要有意义,中间不要有下划线“_”等字符。

【规则7-3】如果类实现了接口,名称尽量和接口相同,只是省掉“I”字符。

h)事件【规则8-1】委托名称采用Pascal规则,即首字符大写。

mfc中tabcontrol控件用法

mfc中tabcontrol控件用法

mfc中tabcontrol控件用法TabControl控件是MFC中常用的窗口控件之一,用于创建多个选项卡,并在每个选项卡上显示不同的内容。

下面将介绍一下MFC中TabControl控件的基本用法。

首先,在MFC应用程序的对话框或窗口中添加一个TabControl控件。

可以通过在资源编辑器中拖放TabControl控件,或动态创建TabControl控件。

接下来,需要在代码中对TabControl控件进行初始化。

可以通过以下步骤来完成:1. 首先,定义一个成员变量来保存TabControl控件的指针,例如:```CTabCtrl m_tabCtrl;```2. 在对话框或窗口的OnInitDialog()函数中,将成员变量与TabControl控件关联起来,例如:```m_tabCtrl.SubclassDlgItem(IDC_TAB_CONTROL, this);```其中IDC_TAB_CONTROL是TabControl控件的ID,this表示当前对话框或窗口。

3. 接下来,可以设置TabControl控件的属性,例如添加选项卡、设置选项卡的文本等。

通过以下代码示例来添加两个选项卡:```m_tabCtrl.InsertItem(0, _T("Tab 1"));m_tabCtrl.InsertItem(1, _T("Tab 2"));```4. 接下来,可以在每个选项卡上添加子控件,以显示不同的内容。

可以使用对话框或窗口的Create()函数动态创建子控件,并将其与选项卡关联起来。

例如,在第一个选项卡上添加一个编辑框:```CWnd* pTabWnd = new CWnd;pTabWnd->Create(NULL, _T(""), WS_CHILD | WS_VISIBLE, CRect(0, 0, 200, 200), &m_tabCtrl, 0);```其中,CWnd是子控件的基类,编辑框是其中的一种。

CSharp_重写tabControl控件

CSharp_重写tabControl控件

TabControl控件——实现双击标签关闭选项卡主要功能:1、双击选项卡标签关闭选中的选项卡2、新建带指定窗体的选项卡3、新建带指定控件的选项卡步骤:1、新建windows控件集合项目2、拖动一个tabControl控件到Panel上,将其Dock属性设置为Fill3、删除默认的两个选项卡4、编写功能代码using System;usingSystem.Collections.Generic;ponentModel;usingSystem.Drawing;usingSystem.Data;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;namespaceBaseControl{public partial class GridTabControl : UserControl{publicGridTabControl(){InitializeComponent();}/// <summary>/// 设置指定选项卡的标签/// </summary>/// <param name="index">选项卡索引(从0开始)</param>/// <param name="lable">标签字符</param>public void SetTabName(int index, string lable){if (this.tabControl1.TabPages.Count < index + 1)return;this.tabControl1.TabPages[index].Text = lable;}/// <summary>/// 添加一个加载一个窗体的选项卡/// </summary>/// <param name="lable"></param>/// <param name="frm"></param>public void AddOneTabWithForm(string lable,Formfrm){TabPage tab = new TabPage(); = "tabPage" + this.tabControl1.TabPages.Count.ToString();tab.Text = lable;frm.TopLevel = false;//设置窗体为非顶级控件tab.Controls.Add(frm);frm.Dock = DockStyle.Fill;//frm.Anchor = (AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top);//会看不到关闭按钮frm.FormBorderStyle = FormBorderStyle.None;//取消显示窗体标题栏,包括最大、最小、关闭窗体按钮this.tabControl1.TabPages.Add(tab);frm.Show();//添加窗体的时候必须有这个东西,不然不会显示窗体/* 说明:* 如果在选项卡中关闭窗体,窗体会消失,但选项卡仍然存在!**/}/// <summary>/// 添加一个加载一个控件的选项卡/// </summary>/// <param name="lable"></param>/// <param name="ctrl"></param>public void AddOneTabWithControl(string lable, Control ctrl){TabPage tab = new TabPage(); = "tabPage" + this.tabControl1.TabPages.Count.ToString();tab.Text = lable;tab.Controls.Add(ctrl);ctrl.Dock = DockStyle.Fill;//使控件停靠在父容器中//ctrl.Anchor = (AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top);//设置添加的控件跟随tabControl大小变化而变化this.tabControl1.TabPages.Add(tab);}/// <summary>/// 双击选项卡将其关闭/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void tabControl1_DoubleClick(object sender, EventArgs e) {TabPage tab = this.tabControl1.SelectedTab;this.tabControl1.TabPages.Remove(tab);}}}。

wpf tabcontrol控件用法

wpf tabcontrol控件用法

wpf tabcontrol控件用法一、WPF TabControl 控件简介WPF TabControl 控件是 WPF 中的一个常用控件,它可以将多个子控件以选项卡的形式展示出来,用户可以通过点击选项卡来切换显示的内容。

TabControl 可以方便地实现多页签功能,并且可以自定义选项卡的样式和布局。

二、TabControl 控件的基本用法1. 创建 TabControl 控件在 XAML 中创建一个 TabControl 控件非常简单,只需要在窗口或页面中添加以下代码即可:```xml<TabControl><!-- 子控件 --></TabControl>```2. 添加子控件在 TabControl 中添加子控件也很容易,只需要在 TabControl 标签内部添加其他控件即可,这些子控件将作为选项卡内容显示出来。

例如:```xml<TabControl><TabItem Header="选项卡1"><TextBlock Text="这是第一个选项卡" /></TabItem><TabItem Header="选项卡2"><TextBlock Text="这是第二个选项卡" /></TabItem></TabControl>```上面的代码创建了两个选项卡,每个选项卡都包含一个 TextBlock 控件。

3. 设置默认选中的选项卡默认情况下,TabControl 的第一个子元素会被设置为默认显示的选项卡。

如果想要更改默认选择,则可以使用 SelectedIndex 属性或SelectedItem 属性。

例如:```xml<TabControl SelectedIndex="1"><TabItem Header="选项卡1"><TextBlock Text="这是第一个选项卡" /></TabItem><TabItem Header="选项卡2"><TextBlock Text="这是第二个选项卡" /></TabItem></TabControl>```上面的代码将默认选择第二个选项卡。

winform tabcontrol控件用法

winform tabcontrol控件用法

winform tabcontrol控件用法
TabControl控件是WinForm中常用的一个控件,用于创建带有
选项卡的界面。

通过TabControl,我们可以方便地创建多个选项卡
来组织内容,让用户更加方便地浏览和使用应用程序。

TabControl控件的使用方法很简单,首先我们需要在Visual Studio中创建一个Windows Forms应用程序,然后在工具箱中找到TabControl控件,将其拖拽到窗体上。

接下来,我们需要在TabControl中添加选项卡。

在属性窗口中
找到TabControl的TabPages属性,点击“…”按钮,可以打开选项卡集合编辑器。

在编辑器中,我们可以添加、删除、重命名选项卡,也可以设置选项卡的图标等属性。

当我们添加完所有选项卡后,我们需要在每个选项卡中添加控件。

我们可以通过拖拽控件到相应的选项卡中来实现。

除了选项卡的基本属性外,TabControl还支持许多其他的属性
和事件。

例如,我们可以通过TabControl的SelectedIndexChanged 事件来响应选项卡的切换,或者通过TabControl的Appearance属性来控制选项卡的外观风格等等。

总之,TabControl控件是WinForm中非常实用的一个控件,通
过它我们可以方便地创建多个选项卡,以便更好地组织和呈现内容。

- 1 -。

初学C++TabControl控件使用

初学C++TabControl控件使用

初学C++TabControl控件使⽤⼤⼀菜鸟⼀枚(24K纯菜),对计算机感兴趣,⼤学⾥才报的这个专业。

以前学过C++,但仅仅是简单的⼊门式学习,现在接触VS2010,通过利⽤微软的开发⼯具进⼀步了解 Visual C++开发。

今天⽤了vs2010下的TabControl控件,现写这个笔记,以便⾃⼰⽇后查看,如果您看到本⽂中有不正确的地⽅,还请您指出来,感谢!⾸先现在窗体中添加TabControl控件,控件ID属性改为IDC_TAB,调整好间距,右击TabControl选择添加变量选项,变量名为m_tab(具体如下图)。

Tab控件可以添加多个选项,本⽂选择添加3个选项,所以在资源⽂件中需要添加三个对话框IDD_DIALOG1,IDD_DIALOG2,IDD_DIALOG3,分别为他们添加类CPage1,CPage2,CPage3。

为了区分这三个对话框,需要在窗体上逐个添加⼀个Static Text控件,他们的Caption值分别为PAGE1,PAGE2,PAGE3。

做好以上准备后,双击头⽂件⽂件夹中的主窗体的头⽂件,添加三个头⽂件引⽤(Page1.h,Page2.h,Page3.h,),在窗体类中添加三个类的对象(CPage1 m_page1...),具体操作如下完成以上操作后,就需要编写代码了,找到主窗体CPP⽂件中的OnIntDialog函数,在其中进⾏代码编写。

m_tab.InsertItem(1,_T("测试1"));m_tab.InsertItem(2,_T("测试2"));m_tab.InsertItem(3,_T("测试3"));//为TAB控件添加三个选项卡m_page1.Create(IDD_DIALOG1,GetDlgItem(IDC_TAB));m_page2.Create(IDD_DIALOG2,GetDlgItem(IDC_TAB));m_page3.Create(IDD_DIALOG3,GetDlgItem(IDC_TAB));//创建页⾯窗⼝CRect rs;m_tab.GetClientRect(rs);//获得当前IDC_TAB的rect值rs.top+=20;rs.bottom-=1;rs.left-=2;rs.right-=1;//对其rect的值进⾏更改m_page1.SetParent(GetDlgItem(IDC_TAB));m_page2.SetParent(GetDlgItem(IDC_TAB));m_page3.SetParent(GetDlgItem(IDC_TAB));//设置母窗体m_page1.MoveWindow(rs);m_page2.MoveWindow(rs);m_page3.MoveWindow(rs);//设置窗体所在的位置m_page1.ShowWindow(SW_SHOW);//默认打开第⼀个⼦窗体m_tab.SetCurSel(0);//选项卡默认选中第⼀个最后我们选中TAB_CONTROL控件,再其属性窗⼝选择编辑事件,选择TCN_SELCHANGE事件进⾏编辑。

VC中Tab Control控件使用方法

VC中Tab Control控件使用方法

VC中Tab Control控件使用方法下面我们来看一下使用步骤。

1. 新建一个MFC工程,取名xyTabControl,选择Dialog based,然后Finish。

2. 删除对话框上默认添加的三个控件。

添加Tab Control控件并在Property属性中设置ID为IDC_TAB1,添加变量m_tabctrl,类型为CTabCtrl。

3. 在对话框的初始化函数OnInitDialog里面添加如下代码:m_tabctrl.InsertItem(0,"memo0"); //添加参数一选项卡m_tabctrl.InsertItem(1,"memo1"); //添加参数二选项卡4.在对话框资源里面添加两个对话框资源, ID分别命名为IDD_PARA1, IDD_PARA2。

字体为宋体, 字号为9, style为Child, Border为None, 调整高度宽度到适中尺寸。

再分别为其添加对应的基于CDialog类CPara1, CPara2。

5. 在CxyTabControlDlg类中添加两个成员变量m_para1, m_para2, 分别是两个子对话框的实例. 代码如下:CPara2 m_para2;CPara1 m_para1;6. 布置IDD_PARA1和IDD_PARA2对话框如下图:7. 在IDD_xyTabControl_DIALOG对话框的初始化函数OnInitDialog里面添加如下代码://关联对话框,并且将IDC_TABTEST控件设为父窗口m_para1.Create(IDD_PARA1,GetDlgItem(IDC_TAB1));m_para2.Create(IDD_PARA2,GetDlgItem(IDC_TAB1));//获得IDC_TABTEST客户区大小CRect rs;m_tabctrl.GetClientRect(&rs);//调整子对话框在父窗口中的位置rs.top += 20;rs.bottom -= 20;rs.left += 1;rs.right -= 2;//设置子对话框尺寸并移动到指定位置m_para1.MoveWindow(&rs);m_para2.MoveWindow(&rs);//分别设置隐藏和显示m_para1.ShowWindow(1);m_para2.ShowWindow(0);//设置默认的选项卡m_tabctrl.SetCurSel(0);8. 添加Tab Control控件的TCN_SELCHANGE事件响应函数OnSelchangeTabtest(NMHDR* pNMHDR, LRESULT* pResult) ,函数体代码如下:int CurSel = m_tabctrl.GetCurSel();switch(CurSel){case 0:m_para1.ShowWindow(true);m_para2.ShowWindow(false);break;case 1:m_para1.ShowWindow(false);m_para2.ShowWindow(true);break;default:;*pResult = 0;}9.好了,完成,这个小程序很简单,效果如下图:。

wpf tabcontrol用法

wpf tabcontrol用法

wpf tabcontrol用法`TabControl` 是WPF(Windows Presentation Foundation)中的一个控件,它用于创建多选项卡界面,允许用户在不同的选项卡之间切换内容。

以下是`TabControl` 的基本用法:1. XAML 声明:在XAML 中,你可以使用`<TabControl>` 元素声明`TabControl`。

通常,每个选项卡都使用`<TabItem>` 元素来定义。

```xml<TabControl><TabItem Header="Tab 1"><!--内容1 --></TabItem><TabItem Header="Tab 2"><!--内容2 --></TabItem><!--可以添加更多的TabItem --></TabControl>```2. 添加内容:在每个`<TabItem>` 中,你可以添加需要显示的内容。

这可以是文本、控件、或其他XAML 元素。

```xml<TabItem Header="Tab 1"><StackPanel><TextBlock Text="Content for Tab 1" /><!--其他控件和内容--></StackPanel></TabItem>```3. 绑定数据:你可以使用数据绑定将数据与选项卡关联。

这可以通过在`<TabItem>` 中使用绑定的方式来实现。

```xml<TabItem Header="{Binding TabHeader}"><!--内容绑定到数据的其他属性--></TabItem>```4. 事件处理:`TabControl` 提供了一些事件,例如`SelectionChanged` 事件,你可以通过在XAML 或代码中订阅这些事件来执行相应的操作。

c#下重写BUTTON控件

c#下重写BUTTON控件

c#下重写BUTTON控件using System;using System.Windows;using System.Drawing;using System.Drawing.Drawing2D;using System.Windows .Forms ;namespace XPCtrl{/// <summary>/// XPButton 的摘要说明。

/// </summary>public class XPButton:System.Windows.Forms.Button{private bool mouseover=false;public XPButton(){//// TODO: 在此处添加构造函数逻辑//this.Cursor = System.Windows.Forms.Cursors.Hand;}protected override void OnPaint(System.Windows.Forms.PaintEventArgs e){// base.OnPaint (e);// System.Drawing.Graphics pp=this.CreateGraphics();// e.Graphics.Clear(Color.Transparent);// e.Graphics.DrawEllipse(new System.Drawing.Pen(System.Drawing.Color.WhiteSmoke,5),0,0,this.Width,this.Height);// System.Drawing.SolidBrush dd=new SolidBrush(System.Drawing.Color.WhiteSmoke);// e.Graphics.FillEllipse(dd,0,0,this.Width,this.Height);// (this.BackColor.T oString ())Color c5 = Color.FromArgb(255,255,255);Color c2 = Color.FromArgb(192,192,192);if(mouseover){c5=Color.FromArgb(245,245,245);//c2=Color.FromArgb(192,192,192);c2=Color.FromArgb(180,175,190);}Brush b = new System.Drawing.Drawing2D.LinearGradientBrush(ClientRectangle, c5, c2, LinearGradientMode.Vertical);//System.Drawing.Region=new Region(int offsetwidth=this.Width/50;Point[] points=new Point[8];points[0].X=offsetwidth;points[0].Y=0;points[1].X=this.Width-offsetwidth;points[1].Y=0;points[2].X=this.Width;points[2].Y=offsetwidth;points[3].X=this.Width;points[3].Y=this.Height-offsetwidth;points[4].X=this.Width-offsetwidth;points[4].Y=this.Height;points[5].X=offsetwidth;points[5].Y=this.Height;points[6].X=0;points[6].Y=this.Height-offsetwidth;points[7].X=0;points[7].Y=offsetwidth;// e.Graphics.FillRectangle (b, ClientRectangle); e.Graphics.FillPolygon(b,points,FillMode.Winding); if(this.Focused){int offsetwidth1=(this.Width-5)/50+2;Point[] points1=new Point[8];points1[0].X=offsetwidth1;points1[0].Y=2;points1[1].X=this.Width-offsetwidth1;points1[1].Y=2;points1[2].X=this.Width-1;points1[2].Y=offsetwidth1;points1[3].X=this.Width-1;points1[3].Y=this.Height-offsetwidth1;points1[4].X=this.Width-offsetwidth1;points1[4].Y=this.Height-1;points1[5].X=1;points1[5].Y=this.Height-1;points1[6].X=2;points1[6].Y=this.Height-offsetwidth1;points1[7].X=2;points1[7].Y=offsetwidth1;// e.Graphics.DrawPolygon(new Pen(Color.Yellow,2),points1); Pen p=new Pen(Color.Orange,2);Pen p1=new Pen(Color.Wheat,2);//p.DashStyle=DashStyle.DashDot;e.Graphics.DrawLine(p1,points1[0],points1[1]);e.Graphics.DrawLine(p,points1[1],points1[2]);e.Graphics.DrawLine(p,points1[2],points1[3]);e.Graphics.DrawLine(p,points1[3],points1[4]);e.Graphics.DrawLine(p,points1[4],points1[5]);e.Graphics.DrawLine(p,points1[5],points1[6]);e.Graphics.DrawLine(p1,points1[6],points1[7]);e.Graphics.DrawLine(p1,points1[7],points1[0]);}e.Graphics.DrawPolygon(new Pen(Color.DarkBlue,2),points); // e.Graphics.DrawLine(new Pen(Color.DarkBlue,2),newPoint(0,0),new Point(this.Width,0));// e.Graphics.DrawLine(new Pen(Color.DarkBlue,2),new Point(0,0),new Point(0,this.Height));// e.Graphics.DrawLine(new Pen(Color.DarkBlue,2),new Point(this.Width,this.Height),new Point(this.Width,0));// e.Graphics.DrawLine(new Pen(Color.DarkBlue,2),new Point(this.Width,this.Height),new Point(0,this.Height));StringFormat drawFormat = new StringFormat();drawFormat.FormatFlags = StringFormatFlags.DisplayFormatControl;drawFormat.LineAlignment=StringAlignment.Center;drawFormat.Alignment=System.Drawing.StringAlignment.C enter;e.Graphics.DrawString(this.Text,this.Font,new LinearGradientBrush(this.ClientRectangle,Color.Black,Color.Black ,LinearGradientMode.Vertical),this.ClientRectangle,drawFormat);b.Dispose();}protected override void OnLeave(EventArgs e){base.OnLeave (e);}// protected override void OnMouseHover(EventArgs e)// {//// mouseover=true;// this.Invalidate(false);// base.OnMouseHover (e);// }protected override void OnMouseEnter(EventArgs e){mouseover=true;this.Invalidate(false);base.OnMouseEnter (e);}protected override void OnNotifyMessage(System.Windows.Forms.Message m) {base.OnNotifyMessage (m);}protected override void OnMouseLeave(EventArgs e){mouseover=false;this.Invalidate(false);base.OnMouseLeave (e);}private void DrawButton( System.Drawing.Graphics g){}protected override void OnPaintBackground(System.Windows.Forms.PaintEventArgs pevent){// Color c5 = Color.FromArgb// (255,255,255);// Color c2 = Color.FromArgb// (192,192,192);// if(mouseover)// {// c5=Color.FromArgb(245,245,245);// //c2=Color.FromArgb(192,192,192);// c2=Color.FromArgb(180,175,190);// }// Brush b = new System.Drawing.Drawing2D.LinearGradientBrush// (ClientRectangle, c5, c2, LinearGradientMode.Vertical);//pevent.Graphics .DrawRectangle(new Pen(Color.Transparent,2),this.ClientRectangle);pevent.Graphics .Clear(Color.Wheat );//base.OnPaintBackground (pevent);}}}在Form1.cs中调用我的方法是先拖一个windows的Button过来,再改两个地方一个是变量定义:private XPCtrl.XPButton button1;另一个是Windows 窗体设计器生成的代码中:this.button1 = new XPCtrl.XPButton();。

winform控件重绘之button

winform控件重绘之button

WinForm控件重写之button看到网上很多关于winform控件重写的文章,很是羡慕那些大仙们,一时心血来潮自己也比葫芦画瓢简单写了个button控件,初次在网络上献丑,不足之处多包涵,废话少说开始干活……首先新建一个类库项目,添加相关的引用,准备工作完成后,开始代码。

其实控件重写主要就是通过重写OnPaint函数来实现的,但是有些是没有onpaint 函数,怎么判断呢,很简单就是看看原有控件的方法中有没有paint()方法,如果没有就不能通过OnPaint来重绘了,可以通过其他的方法来实现,具体网上看资料。

对于牵涉到重绘背景或者前景色的,还要必须重写OnResize()方法,不然当控件拉大的时候就会变味了,这个可以自己试试。

对于一些有鼠标效果的控件可以重写相关的鼠标事件来重新绘制效果,本例的button就可以参考。

具体代码如下using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Drawing;using System.Drawing.Drawing2D;using System.Windows.Forms;using ponentModel;namespace ButtonX{public class ButtonNew : Button{Rectangle r;private Brush _myBrush=null;private Color _color1=System.Drawing.Color.FromArgb(255,255,1 92);private Color _color2=System.Drawing.Color.FromArgb(0,0,192);private Color color3;private Color color4;[Category("设置"), Description("渐变开始颜色")]public Color color1{get { return _color1; }set { _color1 = value; }}[Category("设置"), Description("渐变结束颜色")]public Color color2{get { return _color2; }set { _color2 = value; }}public ButtonNew(){r = new Rectangle(0, 0,150 ,80 );_myBrush = new LinearGradientBrush(r, color1, color2, Lin earGradientMode.Vertical);}public Brush MyBrush{get { return _myBrush; }set { _myBrush = value; }}protected override void OnResize(EventArgs e){base.OnResize(e);r = new Rectangle(0,0,this.Width,this.Height);MyBrush = new LinearGradientBrush(r, color1, color2, Line arGradientMode.Vertical);}protected override void OnMouseLeave(EventArgs e){base.OnMouseLeave(e);r = new Rectangle(0, 0, this.Width, this.Height);color1 = color3;color2 = color4;MyBrush = new LinearGradientBrush(r, color1, color2, Line arGradientMode.Vertical);}protected override void OnMouseEnter(EventArgs e){base.OnMouseEnter(e);color3 = this.color1;color4 = this.color2;color1 = System.Drawing.Color.FromArgb(255, 255, 136);color2 = System.Drawing.Color.FromArgb(0, 0, 192);r = new Rectangle(0, 0, this.Width, this.Height);MyBrush = new LinearGradientBrush(r, color1, color2, Line arGradientMode.Vertical);}protected override void OnPaint(PaintEventArgs pevent){base.OnPaint(pevent);Graphics g = pevent.Graphics;g.FillRectangle(MyBrush, this.ClientRectangle);StringFormat strF = new StringFormat();strF.Alignment = System.Drawing.StringAlignment.Center; strF.LineAlignment = StringAlignment.Center;g.DrawString(this.Text, this.Font, new SolidBrush(Color.B lack),this.ClientRectangle, strF);}}}。

wpf tabcontrol 用法

wpf tabcontrol 用法

WPF TabControl 用法探究在 WPF 中,TabControl 是一个常用的控件,它允许用户在多个选项卡之间进行导航和切换。

在本文中,我们将深入探讨 WPF TabControl 的用法,从简单到复杂,逐步展开这一主题。

1. TabControl 的基本用法让我们从 TabControl 的基本用法开始。

TabControl 提供了一种简单的方式来组织和显示多个选项卡内容。

通过在 XAML 中定义TabControl,并在其中添加 TabItem,我们就可以创建一个基本的选项卡界面。

例如:```xaml<TabControl><TabItem Header="Tab 1"><!-- Tab 1 Content --></TabItem><TabItem Header="Tab 2"><!-- Tab 2 Content --></TabItem></TabControl>```通过这种简单的方式,我们可以快速地创建一个具有多个选项卡的界面,让用户可以方便地在不同内容之间进行切换。

2. TabControl 的高级用法除了基本的选项卡切换功能外,TabControl 还提供了许多高级用法,帮助我们更灵活地控制选项卡的行为和外观。

我们可以通过样式和模板来定制选项卡的外观,使其符合我们的设计需求。

我们还可以通过绑定和命令来动态地控制选项卡的显示和隐藏,从而实现更复杂的界面交互。

另外,TabControl 还支持通过数据绑定来动态生成选项卡,这为我们在处理动态内容时提供了便利。

通过数据绑定,我们可以将选项卡的内容与数据模型关联起来,实现内容的动态更新和切换。

3. 个人观点和理解在我看来,TabControl 是一个非常强大且灵活的控件,它为我们在WPF 应用程序中创建多标签界面提供了强大的支持。

vc tab控件的用法

vc tab控件的用法

vc tab控件的用法VC++中的Tab控件是一种常见的界面控件,用于创建多页式的界面布局。

Tab控件通常用于将多个相关的控件或页面分组显示,以便用户可以通过切换选项卡来轻松切换内容。

使用Tab控件需要进行以下步骤:1.在资源编辑器中添加一个Tab控件。

选择项目中的对话框文件,然后在工具箱中选择Tab控件,并拖动到对话框上。

2.添加多个对话框资源作为选项卡中的各个页。

在资源编辑器中,右击Tab控件,选择添加页。

可以在每个页上放置需要的控件。

3.在代码中关联Tab控件的变量。

在对话框类的头文件中,添加一个成员变量,类型为CTabCtrl,用于表示Tab控件。

4.通过DDX_Control宏或手动获取对Tab控件的指针。

在对话框的DoDataExchange函数中,通过DDX_Control宏将对Tab控件的关联,或者使用GetDlgItem函数手动获取Tab控件的指针。

5.在初始化对话框时,添加选项卡页。

在OnInitDialog函数中,使用Tab控件的InsertItem函数添加选项卡页,并设置选项卡的文本。

6.处理选项卡切换事件。

可以在Tab控件的响应函数中处理选项卡切换事件,通过GetCurSel函数获取当前选中的页索引,然后根据索引显示相应的页内容。

拓展:Tab控件还可以进行一些其他的设置和操作,例如设置选项卡的颜色、字体、图标等,显示或隐藏选项卡的边框,禁用某个选项卡等。

此外,还可以通过自定义页控件实现更灵活的界面布局。

通过继承CDialog或CFormView类,并在资源编辑器中添加自定义的对话框资源作为选项卡页,可以自由地设计和布局每个选项卡的内容。

总之,Tab控件是一种方便实现多页式界面布局的控件,通过在资源编辑器中添加多个对话框作为选项卡页,然后在代码中进行关联和处理,可以实现切换选项卡来切换内容的功能。

CSharp扩展TrackBar控件显示不同风格

CSharp扩展TrackBar控件显示不同风格

CSharp扩展TrackBar控件显示不同风格C# 扩展TrackBar控件显示不同风格 ,. 控件效果,. 开发思路TrackBar控件没有像其他控件那样,直接提供给用户重绘的函数,要实现个性化的TrackBar控件直接继承TrackBar控件,利用TrackBar的一些Windows消息,获取TrackBar控件的信息,然后自己完全重绘,这种方法的好处是保留TrackBar控件的标准操作和属性,但是需要比较清楚的了解TrackBar控件的Windows消息。

,. 源码介绍实现TrackBar控件显示不同风格需要的一些API消息。

TrackBar控件相关的一些消息都是以TBM(TackBar Message)开头的,在TrackBar控件的美化中,主要用到了以下三个消息:, TBM_GETCHANNELRECT 获取轨道的位置和大小。

, TBM_GETTHUMBRECT 获取滑块的位置和大小。

, TBM_GETNUMTICS 获取刻度的总个数。

要获取这些信息,只需要向TrackBar控件发送相应的消息即可,例如需要获取取轨道的位置和大小:SendMessage(hWnd, TBM.TBM_GETCHANNELRECT, 0, ref trackRect)。

接下来就是重绘TrackBar控件了。

重绘TrackBar控件,需要重写WndProc函数,在WM_PAINT消息实现重绘就行了:/// <summary>/// 接收消息/// </summary>/// <param name="m"></param>protected override void WndProc(ref Message m){switch (m.Msg){case WM.WM_PAINT:if (!_bPainting){_bPainting = true;PAINTSTRUCT ps = new PAINTSTRUCT(); NativeMethods.BeginPaint(m.HWnd, ref ps); DrawTrackBar(m.HWnd);NativeMethods.ValidateRect(m.HWnd, ref ps.rcPaint); NativeMethods.EndPaint(m.HWnd, ref ps);_bPainting = false;m.Result = Result.TRUE;}else{base.WndProc(ref m);}break;default:base.WndProc(ref m);break;}}DrawTrackBar函数的功能就是获取TrackBar控件的一些信息,然后分别调用四个函数来绘制TrackBar控件:, OnRenderBackground函数,绘制TrackBar控件的背景。

C#重绘TabControl的Tabpage标签,添加图片及关闭按钮

C#重绘TabControl的Tabpage标签,添加图片及关闭按钮

C#重绘TabControl的Tabpage标签,添加图片及关闭按钮using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.T ext;using System.Windows.Forms;namespace TabControlTest{public partial class Form1 : Form{public Form1(){InitializeComponent();}const int CLOSE_SIZE = 15;Bitmap image = new Bitmap("ONE.ico");private void MainTabControl_DrawItem(object send er, DrawItemEventArgs e){try{Rectangle myTabRect = this.MainTabControl.GetTabRect(e.Index);//先添加TabPage属性e.Graphics.DrawString(this.MainTabControl.Tab Pages[e.Index].Text, this.Font, SystemBrushes.ControlText, myTabR ect.X + 2, myTabRect.Y + 2);//再画一个矩形框using (Pen p = new Pen(Color.White)){myTabRect.Offset(myTabRect.Width - (CLOS E_SIZE + 3), 2);myTabRect.Width = CLOSE_SIZE;myTabRect.Height = CLOSE_SIZE;e.Graphics.DrawRectangle(p, myTabRect);}//填充矩形框Color recColor = e.State == DrawItemState.Sel ected ? Color.White : Color.White;using (Brush b = new SolidBrush(recColor)){e.Graphics.FillRectangle(b, myTabRect);}//画关闭符号using (Pen objpen = new Pen(Color.Black)){//"/"线Point p1 = new Point(myTabRect.X + 3, myT abRect.Y + 3);Point p2 = new Point(myTabRect.X + myTab Rect.Width - 3, myTabRect.Y + myTabRect.Height - 3);e.Graphics.DrawLine(objpen, p1, p2);//"/"线Point p3 = new Point(myTabRect.X + 3, myT abRect.Y + myTabRect.Height - 3);Point p4 = new Point(myTabRect.X + myTab Rect.Width - 3, myTabRect.Y + 3);e.Graphics.DrawLine(objpen, p3, p4);////========================== ===================Bitmap bt = new Bitmap(image);Point p5 = new Point(myTabRect.X - 50, 4);e.Graphics.DrawImage(bt, p5);//e.Graphics.DrawString(this.MainTabContro l.TabPages[e.Index].Text, this.Font, objpen.Brush, p5);}//绘制小图标//============================= ========================================= ========//Bitmap bt = new Bitmap("E://1//2.jpg");//Point p5 = new Point(4, 4);////e.Graphics.DrawImage(bt, e.Bounds);//e.Graphics.DrawImage(bt, p5);//Pen pt = new Pen(Color.Red);////e.Graphics.DrawString(this.MainTabControl. TabPages[e.Index].Text, this.Font, pt.Brush, e.Bounds);//e.Graphics.DrawString(this.MainTabControl.T abPages[e.Index].T ext, this.Font, pt.Brush, p5);e.Graphics.Dispose();}catch{}}private void MainTabControl_MouseDown(object se nder, MouseEventArgs e){if (e.Button == MouseButtons.Left){int x = e.X, y = e.Y;//计算关闭区域Rectangle myTabRect = this.MainTabControl.G etTabRect(this.MainTabControl.SelectedIndex);myTabRect.Offset(myTabRect.Width - (CLOSE_ SIZE + 3), 2);myTabRect.Width = CLOSE_SIZE;myTabRect.Height = CLOSE_SIZE;//如果鼠标在区域内就关闭选项卡bool isClose = x > myT abRect.X && x < myTa bRect.Right&& y > myTabRect.Y && y < myTabRect.Bott om;if (isClose == true){this.MainTabControl.TabPages.Remove(this. MainTabControl.SelectedTab);}}}//初始化页面private void Form1_Load(object sender, EventArgs e){//清空控件//this.MainTabControl.TabPages.Clear();//绘制的方式OwnerDrawFixed表示由窗体绘制大小也一样this.MainTabControl.DrawMode = TabDrawMod e.OwnerDrawFixed;this.MainTabControl.Padding = new System.Dra wing.Point(CLOSE_SIZE, CLOSE_SIZE);this.MainTabControl.DrawItem += new DrawIte mEventHandler(this.MainTabControl_DrawItem);this.MainTabControl.MouseDown += new Syste m.Windows.Forms.MouseEventHandler(this.MainTabControl_Mo useDown);}//添加新的tabPage并修改所有tabPage标签上面的图片private void button1_Click(object sender, EventArg s e){TabPage tabtage = new T abPage();MainTabControl.TabPages.Add(tabtage);MainTabControl.SelectedT ab = tabtage;image = new Bitmap("ONE.ico");}//关闭选中的tabPageprivate void button2_Click(object sender, EventArg s e){MainTabControl.TabPages.Remove(MainTabCont rol.SelectedTab);}}}。

C#Winform中tabControl的使用

C#Winform中tabControl的使用
为了避免重复显示造成失误可以在开始的时候遍历当前的tabpage比对如果没有发现就执行上面的操作新建一个tabpage否则直接将已经打开的页面显示给用户详见下面代码
C#Winform中 tabControl的使用
在本次的项目中,页面布局部分使用了tabControl控件,下面总结下它 使用方法(下见代码部分):
2
foreach (TabPage tabpage in tabControl1.TabPages)
3
{

if ( == "userinfo")
5
{
6
have = true;
7
this.tabControl1.SelectedTab = tabpage;
8
return;
9
}
10
为了避免,重复显示,造成失误,可以在开始的时候遍历当前的tabpage,比对如果没有发现就执行上面的操作, 新建一个tabpage,否则直接将已经打开的页面显示给用户,详见下面代码:
View Code
1 bool have = false;
6
user_info.Dock = DockStyle.Fill;
7
user_info.Show();
8
// this.tabControl1.Controls.Add(user_info);
9
TabPage tabpage = new System.Windows.Forms.TabPage("uerinfo");
10
= "userinfo";
11
tabpage.AutoScroll = true;
12
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

TabControl控件
——实现双击标签关闭选项卡
主要功能:
1、双击选项卡标签关闭选中的选项卡
2、新建带指定窗体的选项卡
3、新建带指定控件的选项卡
步骤:
1、新建windows控件集合项目
2、拖动一个tabControl控件到Panel上,将其Dock属性设置为Fill
3、删除默认的两个选项卡
4、编写功能代码
using System;
usingSystem.Collections.Generic;
ponentModel;
usingSystem.Drawing;
usingSystem.Data;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
namespaceBaseControl
{
public partial class GridTabControl : UserControl
{
publicGridTabControl()
{
InitializeComponent();
}
/// <summary>
/// 设置指定选项卡的标签
/// </summary>
/// <param name="index">选项卡索引(从0开始)</param>
/// <param name="lable">标签字符</param>
public void SetTabName(int index, string lable)
{
if (this.tabControl1.TabPages.Count < index + 1)
return;
this.tabControl1.TabPages[index].Text = lable;
}
/// <summary>
/// 添加一个加载一个窗体的选项卡
/// </summary>
/// <param name="lable"></param>
/// <param name="frm"></param>
public void AddOneTabWithForm(string lable,Formfrm)
{
TabPage tab = new TabPage();
= "tabPage" + this.tabControl1.TabPages.Count.ToString();
tab.Text = lable;
frm.TopLevel = false;//设置窗体为非顶级控件
tab.Controls.Add(frm);
frm.Dock = DockStyle.Fill;
//frm.Anchor = (AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top);//会看不到关闭按钮
frm.FormBorderStyle = FormBorderStyle.None;//取消显示窗体标题栏,包括最大、最小、关闭窗体按钮
this.tabControl1.TabPages.Add(tab);
frm.Show();//添加窗体的时候必须有这个东西,不然不会显示窗体
/* 说明:
* 如果在选项卡中关闭窗体,窗体会消失,但选项卡仍然存在!
*
*/
}
/// <summary>
/// 添加一个加载一个控件的选项卡
/// </summary>
/// <param name="lable"></param>
/// <param name="ctrl"></param>
public void AddOneTabWithControl(string lable, Control ctrl)
{
TabPage tab = new TabPage();
= "tabPage" + this.tabControl1.TabPages.Count.ToString();
tab.Text = lable;
tab.Controls.Add(ctrl);
ctrl.Dock = DockStyle.Fill;//使控件停靠在父容器中
//ctrl.Anchor = (AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top);//设置添加的控件跟随tabControl大小变化而变化
this.tabControl1.TabPages.Add(tab);
}
/// <summary>
/// 双击选项卡将其关闭
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tabControl1_DoubleClick(object sender, EventArgs e) {
TabPage tab = this.tabControl1.SelectedTab;
this.tabControl1.TabPages.Remove(tab);
}
}
}。

相关文档
最新文档