[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 和 ...
随机推荐
- hash详细介绍
转发http://www.cnblogs.com/maybe2030/p/4719267.html (请转步这个网站,写得非常好)
- postman—Sandbox和断言
Postman沙盒 Postman Sandbox是一个JavaScript执行环境,您可以在编写预请求脚本和测试脚本(在Postman和Newman中)时可用.在这个沙箱中执行您在预请求/测试脚本部 ...
- React 之React.createContext
使用Context,可以跨越组件进行数据传递 import React from 'react'; import ReactDOM from 'react-dom'; const ThemeConte ...
- 一本通例题-生日蛋糕——题解<超强深搜剪枝,从无限到有限>
题目传送 显然是道深搜题.由于蛋糕上表面在最底层的半径确认后就确认了,所以搜索时的面积着重看侧面积. 找维度/搜索面临状态/对象:当前体积v,当前外表面面积s,各层的半径r[],各层的高度h[]. 可 ...
- Android and HTML5 开发手机应用(转载)
作为一个WEB开发者,HTML5让我兴奋,因为它可以将桌面应用程序功能带入浏览器中.但在国内,看着到处横行的IE8版本以下的浏览器,觉得到能大规模使用HTML5技术的那天,还遥遥无期.但面对iOS及A ...
- optistruct线性求解一次二次单元应力位移比较
通过分析比较10mm.5mm.3mm.1mm的网格模型, 网格越细密: 位移与应力均趋于恒定值(收敛): 一次与二次单元的应力区域一致: 一次与二次单元的位移相差11.3%,一次单元的位移小. 所用的 ...
- p2619 [国家集训队2]Tree I [wqs二分学习]
分析 https://www.cnblogs.com/CreeperLKF/p/9045491.html 反正这个博客看起来很nb就对了 但是不知道他在说啥 实际上wqs二分就是原来的值dp[x]表示 ...
- .bash_profile vs .bashrc
w http://www.joshstaiger.org/archives/2005/07/bash_profile_vs.html
- leetcode 258. 各位相加 (python)
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数. 示例: 输入: 38输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2. 由于 2 是一位数,所以 ...
- MongoDB--(NoSQL)入门介绍
NoSQL中比较优秀的产品 windows 下载安装 shell 基本操作(javascript 引擎) BSON扩充的数据类型(JSON的扩展,浮点型,日期型的扩充) step1.创建数据库 use ...