網站首頁 編程語言 正文
功能目標
使用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;
}
}
動畫演示
原文鏈接:https://blog.csdn.net/yue008/article/details/126023355
相關推薦
- 2022-07-12 Handler機制相關流程
- 2022-07-14 C語言每日練習之統計文本單詞數及高頻詞_C 語言
- 2023-05-15 bash?if條件判斷的使用_linux shell
- 2022-11-22 Golang自旋鎖的相關介紹_Golang
- 2022-06-12 C語言實題講解快速掌握單鏈表上_C 語言
- 2022-12-03 淺析nginx?客戶端返回499的錯誤碼的問題_nginx
- 2022-11-26 詳解vant2?自動檢查表單驗證?-validate_React
- 2022-07-25 C/C++實現線性順序表的示例代碼_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支