C# 系统应用之使用Pancel控件同一窗体切换页面
該文章是項目"個人電腦歷史記錄清除軟件"的系列文章.主要講述如何使用Pancel控件實現類似于360安全衛士的點擊圖標窗體不變,但頁面內容變換的功能及遇到的重疊Panel不能設置Visible(可見)問題.
一.通過文檔大綱查看層次關系
在使用panel控件時我遇到的一個問題是:當有多個panel(對控件集合分組)控件重疊顯示時,在頁面切換如下代碼:
private void pictureBox1_Click(object sender, EventArgs e) {panelIE.Visible = true;panel2.Visible = false; }但運行的結果總是Panel1和Panel2同時隱藏.(感謝:bdmh)
解決方案:其中一個panel的parent可能被設置為另一個panel了,在拖動窗體控件時很容易就拖動至其他空間上.通過打開"視圖->其他窗口->文檔大綱"查看控件的層次圖,就可以發現panelIE確實被自動設置為panel2的parent.
所以可以在"文檔大綱"中手動拖動設置其panel關系,但好像只能拖動至頂層.(PS:沒有找到好的方法,而且選中某個panel添加控件如button沒有其視圖可編輯)
二.設置多個panel切換界面
最初的打算是使用6個panel控件實現,點擊不同的圖標設置其Visible(是否課件)實現同一個窗體切換界面.代碼如下:
/// <summary> /// 點擊標題菜單,對panel的顯示 /// </summary> /// <param name="p"></param> private void PanelIsDisplay(int p) {//設置panel顯示界面 (IE\Word\回收站\U盤\電腦\文件粉碎)panelIE.Visible = false;panelWord.Visible = false;panelRecycle.Visible = false;panelU.Visible = false;panelRecent.Visible = false;panelFile.Visible = false; switch (p){case 1: //顯示"清除IE"{panelIE.Visible = true;}break;case 2: //顯示"清除Word"{panelWord.Visible = true;}break;case 3: //顯示"清空回收站"{panelRecycle.Visible = true;this.panelRecycle.BackColor = Color.Red;}break;case 4: //顯示"清除U盤"{panelU.Visible = true;}break;case 5: //顯示"電腦清理"{panelRecent.Visible = true;}break;case 6: //顯示"電腦清理"{panelFile.Visible = true;}break;default:{}break;} }//鼠標點擊"清除IE"實現切換界面 private void pictureBox1_MouseDown(object sender, MouseEventArgs e) {//透明罩設置cmd.ShowOpaqueLayer(panel_mol3, 125, true);//自定義設置Panel切換函數PanelIsDisplay(1); }但是后來發現設置多個panel的層次關系和向某個panel中添加控件時非常繁瑣,同時有的控件不能很好的設置.所以建議如果是2個panel的切換或者沒有重疊的panel設置,可以通過該方法設置其Visible(是否可見)來隱藏與顯示.如果重疊的可以參考下面的方法.
三.Panel控件加載Form實現頁面切換
可以通過panel控件加載Form來實現該頁面切換功能.向解決方案中添加不同頁面的Form,設置窗體的控件是非常方便的,再加載到Panel2中顯示即可.代碼如下:
/// <summary> /// 向panel2中加載窗體Form,MouseEnter事件調用 /// </summary> /// <param name="p"></param> private void Control_Add(Form form) {panel2.Controls.Clear(); //移除所有控件form.TopLevel = false; //設置為非頂級窗體form.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; //設置窗體為非邊框樣式form.Dock = System.Windows.Forms.DockStyle.Fill; //設置樣式是否填充整個panelpanel2.Controls.Add(form); //添加窗體form.Show(); //窗體運行 } //鼠標進入"清空回收站" private void panel_mol3_MouseEnter(object sender, EventArgs e) {//透明罩設置cmd3.ShowOpaqueLayer(panel_mol3, 125, true);if (isClick1 == false) cmd1.HideOpaqueLayer();if (isClick2 == false) cmd2.HideOpaqueLayer();if (isClick4 == false) cmd4.HideOpaqueLayer();if (isClick5 == false) cmd5.HideOpaqueLayer();if (isClick6 == false) cmd6.HideOpaqueLayer();//自定義函數加載窗體 CleanRecycleCleanRecycle recycle = new CleanRecycle();Control_Add(recycle); }運行結果如下圖所示:
最后該文章主要是結合自己的實際東西講解,有些淺顯和簡單,如果你剛好遇到類似的問題就可能對你使用Panel控件有所幫助.同時如果在文章中遇到錯誤或不足的地方,請海涵!我也在尋找更好的方法,如果你在同一個窗體下切換界面有什么更好的方法,希望告知.
(By:Eastmount 2014-3-18 下午4點 原創CSDNhttp://blog.csdn.net/eastmount/)
?
總結
以上是生活随笔為你收集整理的C# 系统应用之使用Pancel控件同一窗体切换页面的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C# 系统应用之ListView控件 (
- 下一篇: [C/C++基础知识] 那些被遗忘的链表