C#利用TreeView控件實(shí)現(xiàn)目錄跳轉(zhuǎn)
功能目標(biāo)
使用Treeview控件實(shí)現(xiàn)點(diǎn)左邊的節(jié)點(diǎn),在右邊顯示相關(guān)的頁(yè)面
知識(shí)點(diǎn)
Treeview
命名空間:System.Windows.Forms
程序集:System.Windows.Forms.dll
顯示標(biāo)記項(xiàng)的分層集合,每個(gè)標(biāo)記項(xiàng)用一個(gè) TreeNode 來(lái)表示。
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();
}
對(duì)應(yīng)treeview控件的詳細(xì)介紹,可參考另一篇文章
Form.MdiParent 屬性
獲取或設(shè)置此窗體的當(dāng)前多文檔界面 (MDI) 父窗體。
Windows 窗體應(yīng)用程序中,經(jīng)常會(huì)在一個(gè)窗體中打開另一個(gè)窗體, 通過(guò)窗體上的不同菜單選擇不同的操作,這種在一個(gè)窗體中打開另一個(gè)窗體的方式可以通過(guò)設(shè)置 MDI 窗體的方式實(shí)現(xiàn)
MDI (Multiple Document Interface) 窗體被稱為多文檔窗體,它是很多 Windows 應(yīng)用程序中常用的界面設(shè)計(jì)
MDI 窗體的設(shè)置并不復(fù)雜,只需要將窗體的屬性 IsMdiContainer 設(shè)置為 True 即可。
this.IsMdiContainer = True;

案例介紹
創(chuàng)建 MDI 窗體,并在該窗體上設(shè)置菜單,包括打開文件、保存文件兩個(gè)菜單項(xiàng)。
1.使用控件ContentMenuStrip,創(chuàng)建兩個(gè)子菜單

2.在Form主窗體的ContentMenuStrip屬性關(guān)聯(lián)此控件,并在屬性isMdiContainer修改為True.
3.子菜單事件代碼編寫。在每個(gè)子菜單的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();
遺留點(diǎn)
問題1:在MdiParent窗體調(diào)用子窗體時(shí),如果返回父窗體,不知如何返回
問題2:嵌套系列,A作為父窗體,把B窗體作為子窗體,但B和C的關(guān)系,B相對(duì)于C屬于父窗體,C屬于子窗體。
知識(shí)延伸
子窗體和父窗體相互傳值
SplitContainer
命名空間:System.Windows.Forms
程序集:System.Windows.Forms.dll
表示一個(gè)由可移動(dòng)條組成的控件,該可移動(dòng)條將容器的顯示區(qū)域分成兩個(gè)大小可調(diào)的面板。
操作步驟
畫面組態(tài)
添加Treeview和splitcontainer控件。
創(chuàng)建四個(gè)畫面,四個(gè)畫面的name屬性分別為:xiaomi、huawei、BWM、benchi;

代碼編寫
目錄樹代碼編寫,創(chuàng)建兩個(gè)父節(jié)點(diǎn),汽車和手機(jī),其中汽車父節(jié)點(diǎn)下面有奔馳和寶馬兩個(gè)子節(jié)點(diǎn)。手機(jī)父節(jié)點(diǎn)下面有小米和華為兩個(gè)子節(jié)點(diǎn)。
代碼觸發(fā)事件為窗體的加載(Load)
private void Form1_Load(object sender, EventArgs e)
{
TreeNode tn1 = new TreeNode("手機(jī)");
TreeNode tn2 = new TreeNode("汽車");
tn1.Nodes.Add("小米");
tn1.Nodes.Add("華為");
tn2.Nodes.Add("寶馬");
tn2.Nodes.Add("奔馳");
treeView1.Nodes.Add(tn1);
treeView1.Nodes.Add(tn2);
}
點(diǎn)擊目錄樹上子節(jié)點(diǎn),獲取Treeview控件的selectnode屬性的text文本值,根據(jù)text文本值的不同,進(jìn)行畫面切換其中text文本代表節(jié)點(diǎn)的內(nèi)容。畫面進(jìn)行切換,畫面顯示則利用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;
}
}
動(dòng)畫演示

到此這篇關(guān)于C#利用TreeView控件實(shí)現(xiàn)目錄跳轉(zhuǎn)的文章就介紹到這了,更多相關(guān)C#目錄跳轉(zhuǎn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#網(wǎng)絡(luò)編程基礎(chǔ)之進(jìn)程和線程詳解
這篇文章主要介紹了C#網(wǎng)絡(luò)編程基礎(chǔ)之進(jìn)程和線程詳解,本文對(duì)進(jìn)程、線程、線程池知識(shí)做了淺顯易懂的講解,并配有代碼實(shí)例,需要的朋友可以參考下2014-08-08
C# CancellationToken和CancellationTokenSource的用法詳解
做了.net core之后,發(fā)現(xiàn)CancellationToken用的越來(lái)越平凡了。這也難怪,原來(lái).net framework使用異步的不是很多,而.net core首推異步編程,到處可以看到Task的影子,而CancellationToken正好是異步Task的一個(gè)控制器,所以花點(diǎn)時(shí)間做個(gè)筆記2021-06-06

