首頁 > 軟體

C#實現目錄跳轉(TreeView和SplitContainer)的範例程式碼

2022-07-29 14:01:26

功能目標

使用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)的範例程式碼的文章就介紹到這了,更多相關C# 目錄跳轉內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com