[C#] WinForm動態側邊欄
利用MouseHover、HouseLeave、MouseEnter 等事件實現
首先新增一個checkbox作為控制邊欄顯示的工具
將其Appearence設為Button
並對他設置MouseHover事件,滑鼠移到上面時自動展開邊欄
首先新增一個checkbox作為控制邊欄顯示的工具
將其Appearence設為Button
並對他設置MouseHover事件,滑鼠移到上面時自動展開邊欄
private void toolStripButton1_MouseHover(object sender, EventArgs e) { if (splitContainer1.Panel1Collapsed)//true代表已收合 splitContainer1.Panel1Collapsed = false; }
這邊使用SplitContainer是為了可以讓使用者自由調整欄寬
如果用一般的Panel可以直接 panel2.Visable = false
之後是CheckBox_Checked事件,有選取的話則永久顯示邊欄
private void checkBox1_CheckedChanged(object sender, EventArgs e){sidebarshown = !sidebarshown;if (sidebarshown == false) splitContainer1.Panel1Collapsed = true;else splitContainer1.Panel1Collapsed = false;}之後對邊欄設置MouseLeave事件,離開時如果checkbox沒有按下去的話就自動收合側欄這邊多判斷了滑鼠位置是希望可以只在滑鼠從右側離開邊欄時才觸發private void splitContainer1_Panel_MouseLeave(object sender, EventArgs e){if (sidebarshown != true && PointToClient(Cursor.Position).X - splitContainer1.Location.X > splitContainer1.Panel1.Width)splitContainer1.Panel1Collapsed = true;}最後新增滑鼠進到主畫面時的MouseEnter事件,確保邊欄可以確實確實關閉private void splitContainer1_Panel2_MouseEnter(object sender, EventArgs e){if (sidebarshown != true)splitContainer1.Panel1Collapsed = true;}
留言
張貼留言