(一)标签页

先看看效果:

代码:

  1. public partial class 标签页 : Form
  2. {
  3. string s = "";
  4. public 标签页()
  5. {
  6. InitializeComponent();
  7. }
  8. /// <summary>
  9. /// 判断选项卡中是否有本选项卡
  10. /// </summary>
  11. /// <param name="s">选项卡名</param>
  12. /// <returns>布尔型</returns>
  13.  
  14. private bool HasTablePages(string s)
  15. {
  16. for (int i = ; i < tabControl1.TabPages.Count; i++)
  17. {
  18. if (tabControl1.TabPages[i].Text == s)
  19. {
  20. tabControl1.SelectedIndex = i;//如果选项卡中有本选项卡,则把本选项卡设为焦点
  21. return false;
  22. }
  23. }
  24. return true;
  25. }
  26. /// <summary>
  27. /// 点击菜单时,创建本选项卡,同时将自定义的选项卡控件添加进去
  28. /// </summary>
  29. /// <param name="s">选项卡名</param>
  30. /// <param name="uc">自定义的控件</param>
  31. private void MenuAdd(string s,UserControl uc)
  32. {
  33. if (HasTablePages(s))
  34. {
  35. TabPage page = new TabPage();
  36. page.Text = s;
  37.  
  38. page.Controls.Clear();
  39. page.Controls.Add(uc);
  40. uc.Dock = DockStyle.Fill;
  41.  
  42. tabControl1.TabPages.Add(page);
  43. tabControl1.SelectedTab = page;
  44. }
  45. }
  46. private void 会员管理ToolStripMenuItem_Click(object sender, EventArgs e)
  47. {
  48. s = "会员管理";
  49. UC_HuiYuan uc = new UC_HuiYuan();
  50. MenuAdd(s,uc);
  51. }
  52.  
  53. private void 数据管理ToolStripMenuItem_Click(object sender, EventArgs e)
  54. {
  55. s = "数据管理";
  56. UC_ShuJu sj = new UC_ShuJu();
  57. MenuAdd(s,sj);
  58. }
  59.  
  60. private void 客房管理ToolStripMenuItem_Click(object sender, EventArgs e)
  61. {
  62. s = "客房管理";
  63. UC_KeFang kf = new UC_KeFang();
  64. MenuAdd(s,kf);
  65. }
  66. /// <summary>
  67. /// 双击选项卡名时,关闭本选项卡
  68. /// </summary>
  69. /// <param name="sender"></param>
  70. /// <param name="e"></param>
  71. private void tabControl1_DoubleClick(object sender, EventArgs e)
  72. {
  73. tabControl1.TabPages.RemoveAt(tabControl1.SelectedIndex);
  74. }
  75. }

(二)子窗体

先看看效果:

代码:

  1. public partial class Form1 : Form
  2. {
  3. public Form1()
  4. {
  5. InitializeComponent();
  6. }
  7. /// <summary>
  8. /// 关闭所有窗口
  9. /// </summary>
  10. /// <param name="sender"></param>
  11. /// <param name="e"></param>
  12. private void 关闭所有窗口ToolStripMenuItem_Click(object sender, EventArgs e)
  13. {
  14. while (this.MdiChildren.Length > )
  15. {
  16. MdiChildren[].Close();
  17. }
  18. }
  19. /// <summary>
  20. /// 新建Form2
  21. /// </summary>
  22. /// <param name="sender"></param>
  23. /// <param name="e"></param>
  24. private void ToolStripMenuItem_Click(object sender, EventArgs e)
  25. {
  26. bool b = true;//用来判断子窗口中是否存在Form2
  27. for (int i = ; i < this.MdiChildren.Length; i++)
  28. {
  29. if (this.MdiChildren[i].Name == "Form2")
  30. {
  31. b = false;
  32. }
  33. }
  34. //没有子窗口 或者 子窗口中没有Form2 时
  35. if (this.MdiChildren.Length == || b)
  36. {
  37. Form2 fm = new Form2();
  38. fm.MdiParent = this;
  39. fm.Show();
  40. }
  41. }
  42. /// <summary>
  43. /// 新建Form3
  44. /// </summary>
  45. /// <param name="sender"></param>
  46. /// <param name="e"></param>
  47. private void toolStripMenuItem2_Click(object sender, EventArgs e)
  48. {
  49. bool b = true;
  50. for (int i = ; i < this.MdiChildren.Length; i++)
  51. {
  52. if (this.MdiChildren[i].Name == "Form3")
  53. {
  54. b = false;
  55. }
  56. }
  57. if (this.MdiChildren.Length == ||b)
  58. {
  59. Form3 fm = new Form3();
  60. fm.MdiParent = this;
  61. fm.Show();
  62. }
  63. }
  64. }

PS:

1.父窗体:IsMdiContainer=true
2.子窗体:建一个窗体,设计好。在父窗体“新建子窗体”界面中,把子窗体new出来。把新new出来的子窗体的MdiParent属性设置为父窗体对象。

20141112 WinForm子窗口标签页的更多相关文章

  1. Google 浏览器设置打开超链接到新窗口标签页

    一.windows  按住Ctrl + 鼠标点击,在新窗口打开,停留在当前页面: 按住Ctrl + Shift + 鼠标点击,在新窗口打开,停留在新窗口: 登录Google账号,管理Google账号, ...

  2. winform子窗口调用父窗口的控件及方法-一般调用

    首先新建一个窗体应用程序,在项目属性中点击右键->添加->添加新项,选择Windows窗体->添加. 在Form1和Form2窗口中各添加一个按钮,并双击添加事件处理函数:     ...

  3. winform子窗口与父窗口的交互-使用委托与事件

    实现子窗口与父窗口的交互,通过父窗口调用并控制子窗口,子窗口也能控制父窗口,使用委托和事件的方法,可以实现. 1.父窗口调用子窗口,并通过子窗口控制父窗口 新建工程,创建两个窗体    显示子窗体的代 ...

  4. 创建带标签页的MDI WinForms应用程序

    http://www.cnblogs.com/island/archive/2008/12/02/mditab.html 创建MDI应用程序 先创建”Windows窗体应用程序”解决方案Tabable ...

  5. 项目总结03:window.open()方法用于子窗口数据回调至父窗口,即子窗口操作父窗口

    window.open()方法用于子窗口数据回调至父窗口,即子窗口操作父窗口 项目中经常遇到一个业务逻辑:在A窗口中打开B窗口,在B窗口中操作完以后关闭B窗口,同时自动刷新A窗口(或局部更新A窗口)( ...

  6. dedecms列表页调用子栏目列表,织梦首页调用栏目的子栏目标签代码

    dedecms列表页调用子栏目列表,织梦首页调用栏目的子栏目标签代码. dedecms列表页调用子栏目列表标签: {dede:channelartlist type='sun' }<a href ...

  7. 4. VIM 系列 - 认识VIM的缓冲区、窗口、标签页

    目录 1. 缓冲区 2. 窗口 3. 标签页 4. 设置一下热键 1. 缓冲区 文件和缓冲区的区别 vim 打开一个文件时,其实是从磁盘中读取文件到内存中,vim的一些操作其实是在操作缓冲区, 当使用 ...

  8. window.open新打开窗口与新开标签页

    最近在使用window.open时忽略了一个细节问题:window.open新打开一个窗口,但是有时却是新打开一个窗口有时打开一个新标签页.虽然对一般的需求来说,这个两种情况都无所谓,但是对于那种有强 ...

  9. 【vim】分割窗口、标签页与Quickfix窗口

    vim支持窗口分割和标签页,合适地使用这两种特性可以使文字编辑工作更愉快. 1. 窗口分割 vim支持窗口的水平分割和垂直分割.以下是常用的操作指令或快捷键. 命令 说明 vim -o <fil ...

随机推荐

  1. today reading notes

    paminit manager from upstart to systemd/systemctl;Vivid Vervet  + openStack kilo;为容器开发者(OpenStack工作环 ...

  2. linux下自动同步internet时间

    linux下很简单直接一句即可: ntpdate time.nist.gov ntp后面参数为internet时间服务器url或ip即可. 但是ntpdate命令需要root特权,如果做成自动运行每次 ...

  3. MediaInfo使用简介(新版本支持HEVC)

    MediaInfo 用来分析视频和音频文件的编码和内容信息,是一款是自由软件 (免费使用.免费获得源代码).他除了提供DLL之外,本身也提供GUI工具用于查看视频信息.我使用中发现,新版本的Media ...

  4. Android学习总结——获取被启动的Activity传回的数据

    当前Activity:包含一个Button和一个TextView,用于启动另一个Activity和显示传回的数据,这里重写了onActivityResult()方法. public class Mai ...

  5. 11.2.0.3.7 PSU补丁升级

    说明:这是新上线主机,还没有建库的.如果库已经存在,那么最后还要进行刷库操作呢! 环境:SUSE Linux Enterprise Server 11 sp1 (x86_64) 要求将数据库从11.2 ...

  6. JAVA程序猿面试题汇总

    (此话题将不断更新,请留意) 第一,谈谈final, finally, finalize的差别. final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承.finally是异常 ...

  7. 依赖注入及AOP简述(五)——依赖注入的方式 .

    二.依赖注入的应用模式 前面我们了解了依赖注入的基本概念,也对一些依赖注入框架进行了简单的介绍,这一章我们主要来讨论作为开发者如何利用依赖注入框架来实现依赖注入的设计思想. 1.     依赖注入的方 ...

  8. oracle resetlog与noresetlog的作用(转载)

    关于resetlog的作用是将日志序列重置,这样以前的归档就作废. 首先一定要明白oracle工作的基本原理,归档情况下:大家一定要同步,谁也不能滞后或者超前,也就是SCN号,如果学oracle不懂s ...

  9. 在 Parallels Desktop 中,全屏模式使用 Win7,唤醒时黑屏

    在Parallels Desktop中,全屏模式下使用Win7,如果Mac电脑自动休眠了,则无法再次唤醒了,唤醒时黑屏. 博主的Mac是2014款MBPR,键盘上所有的键都试过,还是无法唤醒电脑,每次 ...

  10. js中添加事件 attachEvent 与 addEventListener

    给元素添加事件时,使用js进行实现时产生了疑惑,有关事件浏览器兼容的问题,在此记录如下. <!DOCTYPE html> <html> <head> <met ...