[TabControl] TabControl控件的最佳实践,可以把一个窗体和用户控件添加进来
看下效果吧
<ignore_js_op>
下面是一个公共的添加方法
看代码
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
/// <summary> /// 添加一个选项卡 /// </summary> /// <param name="MainTabControlKey">选项卡的键值</param> /// <param name="MainTabControlName">选项卡要显示的名称</param> /// <param name="objTabControl">要添加到的TabControl对象</param> /// <param name="objfrm">要被添加到选项卡的用户控件对象</param> private void addTabControl(string MainTabControlKey, string MainTabControlName, TabControl objTabControl, UserControl objfrm) { try { if (ErgodicModiForm(MainTabControlKey, MainTabControl)) { //声明一个选项卡对象 TabPage tabPage = new TabPage(); //选项卡的名称 tabPage.Name = MainTabControlKey; //选项卡的文本 tabPage.Text = MainTabControlName; //向选项卡集合添加新选项卡 MainTabControl.Controls.Add(tabPage); //子窗体显示 objfrm.Show(); //子窗体大小设置为选项卡大小 objfrm.Size = tabPage.Size; //将子窗体添加到选项卡中 tabPage.Controls.Add(objfrm); //设置当前选项卡为新增选项卡 MainTabControl.SelectedTab.Name = MainTabControlKey; } else { //设为当前选中的选项 MainTabControl.SelectTab(MainTabControlKey); } } catch (Exception) { showMessages objshowMesages = new showMessages(); objshowMesages.ShowDialog("提示信息", "添加选项卡时出错,请检查是否正确连接数据"); } } |
下面的验证方法ErgodicModiForm
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
|
/// </summary> /// <param name="MainTabControlKey">选项卡的键值</param> /// <param name="objTabControl">要添加到的TabControl对象</param> /// <returns></returns> private Boolean ErgodicModiForm(string MainTabControlKey, TabControl objTabControl) { //遍历选项卡判断是否存在该子窗体 foreach (Control con in objTabControl.Controls) { TabPage tab = (TabPage)con; if (tab.Name == MainTabControlKey) { return false;//存在 } } return true;//不存在 } |
下面的调用添加
|
01
02
03
04
05
06
07
08
09
10
11
12
|
try { //声部门控件对象 UserDepartments objfrm = new UserDepartments(); //调用添加选项卡的方法 addTabControl("Departments", "部门信息", MainTabControl, objfrm); } catch (Exception) { showMessages objshowMesages = new showMessages(); objshowMesages.ShowDialog("提示信息", "添加选项卡时出错,请检查是否正确连接数据"); } |
这样就可以动态的添加了, 还可以删除
try { MainTabControl.TabPages.Remove(MainTabControl.SelectedTab); } catch { showMessages objshowMesages = new showMessages(); objshowMesages.ShowDialog("提示信息", "已没有项目可删!"); }
http://www.sufeinet.com/thread-66-1-1.html
[TabControl] TabControl控件的最佳实践,可以把一个窗体和用户控件添加进来的更多相关文章
- 039. asp.netWeb用户控件之七实现具有虚拟键盘的功能的用户控件
用户控件ascx代码: <%@ Control Language="C#" AutoEventWireup="true" CodeFile="K ...
- 无边框窗体、用户控件、Timer控件
一.无边框窗体1 最大化.最小化以及关闭按钮制作实际上就是更换点击前.指向时.点击时的图片 (1)将图片放在该文件夹的Debug中,获取图片的路径Application.StartupPath + & ...
- WinForm将一个窗体的值传到另一个窗体的listbox控件,C#
做arcgisengine二次开发,读取当前图层文件的字段值,别名,类型. 读取文件是在有地图图层的窗体(假设为Form1),由于窗体有限,所以想把读取的数据在另一个窗体(假设为Form2)显示出来 ...
- c# winform 在一个窗体中使用另一个窗体中TextBox控件的值——解决办法
[前提]一个winform应用程序项目中,窗体B,需要使用 窗体A 中一个TextBox控件的值,进行计算等操作. [解决方案] 1.在窗体A中定义:public static double a;// ...
- Android和PHP开发最佳实践
Android和PHP开发最佳实践 <Android和PHP开发最佳实践>基本信息作者: 黄隽实丛书名: 移动应用开发技术丛书出版社:机械工业出版社ISBN:9787111410508上架 ...
- 【转】Java中关于异常处理的十个最佳实践
原文地址:http://www.searchsoa.com.cn/showcontent_71960.htm 导读:异常处理是书写强健Java应用的一个重要部分,Java许你创建新的异常,并通过使用 ...
- Office Add-in 设计规范与最佳实践
作者:陈希章 发表于 2017年8月6日 引子 离上一篇Office Add-in的文章已经过去了一段时间,期间有去年Office 365 Asia Devday & Hackathon的二等 ...
- Java异常处理 10 个最佳实践
异常处理是Java 开发中的一个重要部分.它是关乎每个应用的一个非功能性需求,是为了处理任何错误状况,比如资源不可访问,非法输入,空输入等等.Java提供了几个异常处理特性,以try,catch 和 ...
- Java 编程中关于异常处理的 10 个最佳实践
异常处理是Java 开发中的一个重要部分.它是关乎每个应用的一个非功能性需求,是为了处理任何错误状况,比如资源不可访问,非法输入,空输入等等.Java提供了几个异常处理特性,以try,catch 和 ...
随机推荐
- POJ 2104 K-th Number ( 求取区间 K 大值 || 主席树 || 离线线段树)
题意 : 给出一个含有 N 个数的序列,然后有 M 次问询,每次问询包含 ( L, R, K ) 要求你给出 L 到 R 这个区间的第 K 大是几 分析 : 求取区间 K 大值是个经典的问题,可以使用 ...
- Codeforces 864E - Fire(dp)
原题连接:http://codeforces.com/problemset/problem/864/E 题意:一个人想从大火中带走一些东西.每次他只能带一个,耗时ti ,价值为pi, 当总时间超过di ...
- 【学习心得】Link-cut Tree
Link-cut Tree是一种支持改变树(森林)的形态(link和cut),同时维护树的路径上节点信息的数据结构.lct通过splay来维护每次的perferred path,说白了就是一个动态的树 ...
- warp(图像仿射变换)
仿射变换是一种二维坐标(x,y)到二维坐标(u,v)的线性变换. 对应的齐次坐标矩阵表示形式为: 仿射变换特点: 直线经仿射变换后依然为直线: ’直线之间的相对位置关系保持不变,平行线经仿射变换后依然 ...
- E. Compress Words
E. Compress Words KMP #include<bits/stdc++.h> using namespace std; ]; int len; void getNext(ch ...
- synchronized 同步
1.synchronized关键字的作用域有二种: 1)是某个对象实例内,synchronized aMethod(){}可以防止多个线程同时访问这个对象的synchronized方法(如果一个对象有 ...
- Collector 源码分析
Collectors Collectors 配合 stream 可以实现 MapReduce 操作,也可以单独完成流中元素的收集. 收集器接口和实现 /** * 收集器接口 */ public int ...
- leetcode 62. 不同路径(C++)
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为“Finish”). 问总共有多 ...
- Delphi XE2 之 FireMonkey 入门(24) - 数据绑定: TBindingsList: TBindExpression.Direction
在学习 BindingSource 属性时, 可以让两个控件互为绑定源; TBindExpression 对应的功能是 Direction 属性. 先在窗体上添加 Edit1.Edit2.Bindin ...
- python实现excel转换成pdf
1.安装 需要安装pywin32包,以实现对Office文件的操作,可以批量转换为pdf文件.支持 doc, docx, ppt, pptx, xls, xlsx 等格式. pip install p ...