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