20141112 WinForm子窗口标签页
(一)标签页
先看看效果:
代码:
public partial class 标签页 : Form
{
string s = "";
public 标签页()
{
InitializeComponent();
}
/// <summary>
/// 判断选项卡中是否有本选项卡
/// </summary>
/// <param name="s">选项卡名</param>
/// <returns>布尔型</returns> private bool HasTablePages(string s)
{
for (int i = ; i < tabControl1.TabPages.Count; i++)
{
if (tabControl1.TabPages[i].Text == s)
{
tabControl1.SelectedIndex = i;//如果选项卡中有本选项卡,则把本选项卡设为焦点
return false;
}
}
return true;
}
/// <summary>
/// 点击菜单时,创建本选项卡,同时将自定义的选项卡控件添加进去
/// </summary>
/// <param name="s">选项卡名</param>
/// <param name="uc">自定义的控件</param>
private void MenuAdd(string s,UserControl uc)
{
if (HasTablePages(s))
{
TabPage page = new TabPage();
page.Text = s; page.Controls.Clear();
page.Controls.Add(uc);
uc.Dock = DockStyle.Fill; tabControl1.TabPages.Add(page);
tabControl1.SelectedTab = page;
}
}
private void 会员管理ToolStripMenuItem_Click(object sender, EventArgs e)
{
s = "会员管理";
UC_HuiYuan uc = new UC_HuiYuan();
MenuAdd(s,uc);
} private void 数据管理ToolStripMenuItem_Click(object sender, EventArgs e)
{
s = "数据管理";
UC_ShuJu sj = new UC_ShuJu();
MenuAdd(s,sj);
} private void 客房管理ToolStripMenuItem_Click(object sender, EventArgs e)
{
s = "客房管理";
UC_KeFang kf = new UC_KeFang();
MenuAdd(s,kf);
}
/// <summary>
/// 双击选项卡名时,关闭本选项卡
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tabControl1_DoubleClick(object sender, EventArgs e)
{
tabControl1.TabPages.RemoveAt(tabControl1.SelectedIndex);
}
}
(二)子窗体
先看看效果:
代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 关闭所有窗口
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void 关闭所有窗口ToolStripMenuItem_Click(object sender, EventArgs e)
{
while (this.MdiChildren.Length > )
{
MdiChildren[].Close();
}
}
/// <summary>
/// 新建Form2
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
bool b = true;//用来判断子窗口中是否存在Form2
for (int i = ; i < this.MdiChildren.Length; i++)
{
if (this.MdiChildren[i].Name == "Form2")
{
b = false;
}
}
//没有子窗口 或者 子窗口中没有Form2 时
if (this.MdiChildren.Length == || b)
{
Form2 fm = new Form2();
fm.MdiParent = this;
fm.Show();
}
}
/// <summary>
/// 新建Form3
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void toolStripMenuItem2_Click(object sender, EventArgs e)
{
bool b = true;
for (int i = ; i < this.MdiChildren.Length; i++)
{
if (this.MdiChildren[i].Name == "Form3")
{
b = false;
}
}
if (this.MdiChildren.Length == ||b)
{
Form3 fm = new Form3();
fm.MdiParent = this;
fm.Show();
}
}
}
PS:
1.父窗体:IsMdiContainer=true
2.子窗体:建一个窗体,设计好。在父窗体“新建子窗体”界面中,把子窗体new出来。把新new出来的子窗体的MdiParent属性设置为父窗体对象。
20141112 WinForm子窗口标签页的更多相关文章
- Google 浏览器设置打开超链接到新窗口标签页
一.windows 按住Ctrl + 鼠标点击,在新窗口打开,停留在当前页面: 按住Ctrl + Shift + 鼠标点击,在新窗口打开,停留在新窗口: 登录Google账号,管理Google账号, ...
- winform子窗口调用父窗口的控件及方法-一般调用
首先新建一个窗体应用程序,在项目属性中点击右键->添加->添加新项,选择Windows窗体->添加. 在Form1和Form2窗口中各添加一个按钮,并双击添加事件处理函数: ...
- winform子窗口与父窗口的交互-使用委托与事件
实现子窗口与父窗口的交互,通过父窗口调用并控制子窗口,子窗口也能控制父窗口,使用委托和事件的方法,可以实现. 1.父窗口调用子窗口,并通过子窗口控制父窗口 新建工程,创建两个窗体 显示子窗体的代 ...
- 创建带标签页的MDI WinForms应用程序
http://www.cnblogs.com/island/archive/2008/12/02/mditab.html 创建MDI应用程序 先创建”Windows窗体应用程序”解决方案Tabable ...
- 项目总结03:window.open()方法用于子窗口数据回调至父窗口,即子窗口操作父窗口
window.open()方法用于子窗口数据回调至父窗口,即子窗口操作父窗口 项目中经常遇到一个业务逻辑:在A窗口中打开B窗口,在B窗口中操作完以后关闭B窗口,同时自动刷新A窗口(或局部更新A窗口)( ...
- dedecms列表页调用子栏目列表,织梦首页调用栏目的子栏目标签代码
dedecms列表页调用子栏目列表,织梦首页调用栏目的子栏目标签代码. dedecms列表页调用子栏目列表标签: {dede:channelartlist type='sun' }<a href ...
- 4. VIM 系列 - 认识VIM的缓冲区、窗口、标签页
目录 1. 缓冲区 2. 窗口 3. 标签页 4. 设置一下热键 1. 缓冲区 文件和缓冲区的区别 vim 打开一个文件时,其实是从磁盘中读取文件到内存中,vim的一些操作其实是在操作缓冲区, 当使用 ...
- window.open新打开窗口与新开标签页
最近在使用window.open时忽略了一个细节问题:window.open新打开一个窗口,但是有时却是新打开一个窗口有时打开一个新标签页.虽然对一般的需求来说,这个两种情况都无所谓,但是对于那种有强 ...
- 【vim】分割窗口、标签页与Quickfix窗口
vim支持窗口分割和标签页,合适地使用这两种特性可以使文字编辑工作更愉快. 1. 窗口分割 vim支持窗口的水平分割和垂直分割.以下是常用的操作指令或快捷键. 命令 说明 vim -o <fil ...
随机推荐
- javascript第十六课:动态注册事件
直接给dom元素添加动态事件,如: document.getelementbyid('#id').onclick=function(){ 方法体! };
- 使用Web Application Stress Tool 进行压力测试
1.在测试客户端机器上启动Web Application Stress Tool,在弹出的“建立新脚本”对话框中选择“Record”按钮: 2.在“Record”参数设置第一步中,所有的checkbo ...
- mesos博客集
http://dongxicheng.org/category/apache-mesos/
- JAVA NIO 真正做到处理一个事件
如下图所示: 组1:如果只有上面的红框,不能真正处理该事件,下次执行select()方法,仍然可以select出来该事件.出现死循环现象.如果只有下面的红框,下次select()结果为0,如果外层循环 ...
- <!--转换office时需要此配置 --> <identity impersonate="true" />
1.需要对Office 进行操作时 ,添加权限 <!--转换office时需要此配置 --> <identity impersonate="true" /> ...
- c# List<string>和List<int>互相转换
List<string> 转 List<int> var list = (new[]{"1","2","3"}).T ...
- C语言中两个相等的char值比较 结果为false
unsigned char appendChar1[] = {0xD3, 0xD0, 0xCF, 0xDE, 0xB9, 0xAB, 0xCB, 0xBE}; char appendChar2[] = ...
- com.sun.jdi.InvocationException occurred invoking method.
文章来源于网络, 自己也遇到同样的问题,也是采用这样的方式解决的.原文链接http://zuiyanwangyue.iteye.com/blog/470638 在 HibernateDaoSuppor ...
- baidu-fex 精彩文章
7 天打造前端性能监控系统 http://fex.baidu.com/blog/2014/05/build-performance-monitor-in-7-days/ 前端自动化测试探索 http: ...
- DataGridview 填写数字
private DataGridViewTextBoxEditingControl CellEdit = null; // 声明 一个 CellEdit private void dgv ...