C#实现目录跳转(TreeView和SplitContainer)
功能目标
使用Treeview控件实现点左边的节点,在右边显示相关的页面
知识点
Treeview
命名空间:System.Windows.Forms
程序集:System.Windows.Forms.dll
显示标记项的分层集合,每个标记项用一个 TreeNode 来表示。
private void InitializeTreeView()
{treeView1.BeginUpdate();treeView1.Nodes.Add("Parent");treeView1.Nodes[0].Nodes.Add("child1");treeView1.Nodes[0].Nodes.Add("child2");treeView1.Nodes[0].Nodes[1].Nodes.Add("Grandchild");treeView1.Nodes[0].Nodes[1].Nodes[0].Nodes.Add("Great Grandchild");treeView1.EndUpdate();
}
对应treeview控件的详细介绍,可参考另一篇文章
Form.MdiParent 属性
获取或设置此窗体的当前多文档界面 (MDI) 父窗体。
Windows 窗体应用程序中,经常会在一个窗体中打开另一个窗体, 通过窗体上的不同菜单选择不同的操作,这种在一个窗体中打开另一个窗体的方式可以通过设置 MDI 窗体的方式实现
MDI (Multiple Document Interface) 窗体被称为多文档窗体,它是很多 Windows 应用程序中常用的界面设计
MDI 窗体的设置并不复杂,只需要将窗体的属性 IsMdiContainer 设置为 True 即可。
this.IsMdiContainer = True;
案例介绍
创建 MDI 窗体,并在该窗体上设置菜单,包括打开文件、保存文件两个菜单项。
1.使用控件ContentMenuStrip,创建两个子菜单
2.在Form主窗体的ContentMenuStrip属性关联此控件,并在属性isMdiContainer修改为True.
3.子菜单事件代码编写。在每个子菜单的click事件中编写如下代码
//保存文件SaveFile sf = new SaveFile();sf.FormBorderStyle = FormBorderStyle.None;sf.MdiParent = this;sf.Show();
//打开文件OpenFile OpF = new OpenFile();OpF.FormBorderStyle = FormBorderStyle.None;OpF.MdiParent = this;OpF.Show();
遗留点
问题1:在MdiParent窗体调用子窗体时,如果返回父窗体,不知如何返回
问题2:嵌套系列,A作为父窗体,把B窗体作为子窗体,但B和C的关系,B相对于C属于父窗体,C属于子窗体。
知识延伸
子窗体和父窗体相互传值
SplitContainer
命名空间:System.Windows.Forms
程序集:System.Windows.Forms.dll
表示一个由可移动条组成的控件,该可移动条将容器的显示区域分成两个大小可调的面板。
操作步骤
画面组态
添加Treeview和splitcontainer控件。
创建四个画面,四个画面的name属性分别为:xiaomi、huawei、BWM、benchi;
代码编写
目录树代码编写,创建两个父节点,汽车和手机,其中汽车父节点下面有奔驰和宝马两个子节点。手机父节点下面有小米和华为两个子节点。
代码触发事件为窗体的加载(Load)
private void Form1_Load(object sender, EventArgs e){TreeNode tn1 = new TreeNode("手机");TreeNode tn2 = new TreeNode("汽车");tn1.Nodes.Add("小米");tn1.Nodes.Add("华为");tn2.Nodes.Add("宝马");tn2.Nodes.Add("奔驰");treeView1.Nodes.Add(tn1);treeView1.Nodes.Add(tn2);}
点击目录树上子节点,获取Treeview控件的selectnode属性的text文本值,根据text文本值的不同,进行画面切换其中text文本代表节点的内容。画面进行切换,画面显示则利用splitcontainer控件。
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e){switch (treeView1.SelectedNode.Text){case "小米":splitContainer1.Panel2.Controls.Clear();xiaomi xm = new xiaomi();//xm.MdiParent = this;xm.Dock = DockStyle.Fill;xm.FormBorderStyle = FormBorderStyle.None;xm.TopLevel = false;xm.Parent = this.splitContainer1.Panel2;xm.Show();break;case "华为":splitContainer1.Panel2.Controls.Clear();huawei hw = new huawei();hw.Dock = DockStyle.Fill;hw.FormBorderStyle = FormBorderStyle.None;hw.TopLevel = false;hw.Parent = this.splitContainer1.Panel2;hw.Show();break;case "宝马":splitContainer1.Panel2.Controls.Clear();BWM bwm = new BWM();bwm.Dock = DockStyle.Fill;bwm.FormBorderStyle = FormBorderStyle.None;bwm.TopLevel = false;bwm.Parent = this.splitContainer1.Panel2;bwm.Show();break;case "奔驰":splitContainer1.Panel2.Controls.Clear();benchi bz = new benchi();bz.Dock = DockStyle.Fill;bz.FormBorderStyle = FormBorderStyle.None;bz.TopLevel = false;bz.Parent = this.splitContainer1.Panel2;bz.Show();break;}}
动画演示
C#实现目录跳转(TreeView和SplitContainer)相关推荐
- Linux,OS X mark工具(目录跳转工具)
转帖请注明出处 林夕木大大 在命令行里进行一些操作时,经常会遇到在多个目录之间来回切换的情况.这个时候就会很是苦恼.所以在网上搜索一番后总结如下: Ubuntu/CentOS: 编辑 .bash_p ...
- linux目录跳转指令
1.查看当前目录 pwd 2.跳转至 绝对路径 会从根目录/ 开始跳转.每个目录之间用/隔开 你跳转的目录知道完整目录就用这个 开头带 / cd /目录名 //例如: cd /var/ ...
- linux目录跳转快捷方式——z武器
原文链接:http://www.the5fire.com/linux-cd-z.html 在学python的时候,老师用z 加dirname完成了目录的切换,切换目录之快,命令之简洁,当时很惊讶.li ...
- linux复制文件跳过相同,Linux中拷贝目录跳过指定文件的方法
近日在 Linux 环境中做版本迁移的时候遇到一个问题:需要将一个目录遍历拷贝到另一个目录中,但需要忽略其中的某些文件,由于目录中东西比较多,忽略的项也不好一一指定.普通的 cp 命令并没有排除某个文 ...
- CSDN:写博客时怎么添加文章目录,然后点击目录跳转到对应的内容目录?
文章目录 目录一 目录二 目录三 文章目录 目录一 目录二 目录三 自定义目录 目录一 目录二 目录三 @[TOC]不区分大小写,默认显示:文章目录,如果需要更改,在后面加上英文括号. 下面需要跳转的 ...
- markdown 链接跳转到标题_markdown中锚链接实现目录跳转以及注意事项
当文章有分类,需要快速阅读,通常会先在文首部写一个目录,点击可以跳转. 为文章写目录,特别在文章较长的时候,有助于对内容的整体把握,能提高阅读效率. 以下,将写一个基本的锚目录demo,然后特别说明需 ...
- linux快速目录跳转,一款快速跳转目录的小工具—autojump
前言 开发过程中,我们免不了要经常切换目录.如果是在linux系统或者mac上,则要经常使用cd.如果目录层级比较深,一连串的cd加tab,很容易让人厌烦.这里推荐一款好用的跳转小工具-autojum ...
- linux目录跳到目录,linux目录跳转快捷方式——z武器
在学python的时候,老师用z 加dirname完成了目录的切换,切换目录之快,命令之简洁,当时很惊讶.linux下有这个命令吗,怎么没有听说过. 之前是大量的cd.table操作(cd 然后打出目 ...
- linux目录跳转的好武器z.sh
中午刷微博时看到一篇有关z.sh的介绍. 众所周知,在linux系统中进入目录都是用cd命令的,若是一般的开发人员,进入服务器的目的明确,每次都是进入服务器中的项目配置目录,同时要在好几个目录中来回跳 ...
- linux在多个目录跳转,如何做到在多个目录直接游刃有余的进行切换 -- linux 下的目录切换...
一,为何要使用这几个命令? 可能大家会有疑问,为何要使用这几个命令, 难道用cd不就可以切换目录了吗? 没错,使用cd就可以切换到需要访问的目录, 但是有时会是一个路径很长,层次很多的目录,进到此目录 ...
最新文章
- HarmonyOS UI 开发 vp ,fp , px 以及写具体数字的 理解
- UA MATH567 高维统计 专题0 为什么需要高维统计理论?——协方差估计的高维效应与Marcenko-Pastur规则
- 从NoSQL到Lakehouse,Apache Doris的13年技术演进之路
- 美学设计评价_死亡的孩子无法使用的设计美学
- 数字电路技术可能出现的简答题_2013年9月份考试数字电子技术第二次作业
- python能做什么-普通小白学会Python到底具体能做什么呢?
- 汽车维修企业管理【1】
- 显微镜自动聚焦原理是什么_激光共聚焦显微镜系统的原理和应用讲解
- LeetCode Hard难度题目题解汇总(5/150)
- mysql之my.cnf
- 制造业和物流行业的WMS系统差别在哪?
- stm32-beep蜂鸣器-手把手教学(如何使用原理图)
- Linux下开源邮件系统Postfix+Extmail+Extman环境部署记录
- CososCreator (Android)-AppLovin MAX 广告聚合平台接入+Firebase统计
- Android签名与校验过程详解
- 大一下实验总结(三)
- Android系统判断CPU是32位还是64位
- 飞行员兄弟 JAVA题解
- Python3+pygame中国象棋 代码完整 非常好 有效果演示
- 哈工大软件构造 Git使用
热门文章
- 峰值性噪比matlab,PSNR峰值信噪比matlab实现
- 单片机控制步进电机正反转c语言程序,单片机控制步进电机1步10步100步正反转...
- 小米10青春版刷鸿蒙,没有高刷弱不禁风?小米10青春版刷新低价,这次用户或许会满意!...
- android phone驱动 华为,华为智能手机USB驱动
- EasyRecovery2022版支持电脑, 硬盘, U盘, 内存卡, 回收站等设备数据恢复
- C语言输入一个三位数,并将其逆序
- 基于MATLAB产生式系统(植物识别系统)
- linux中tar命令怎么用,linux tar命令使用详解
- AVR单片机(ATmega128)单片机运算乘除法大约所需时间
- Anaconda3下YOLOV3火焰检测