有時(shí)候發(fā)現(xiàn)界面的布局比較復(fù)雜,需要隱藏顯示一部分內(nèi)容需要使用動(dòng)態(tài)側(cè)邊欄的方法實(shí)現(xiàn),雖然可是使用第三方的控件,但是有時(shí)候也不需要那么麻煩,自己做了一個(gè)簡(jiǎn)單的,可是使用在要求不高的場(chǎng)所。
目前創(chuàng)新互聯(lián)建站已為成百上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、德惠網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。可以實(shí)現(xiàn)側(cè)邊欄的展開、隱藏和鎖定的功能。添加的側(cè)邊欄默認(rèn)是不顯示的通過(guò)鼠標(biāo)的懸停事件MouseHover來(lái)觸發(fā)展開動(dòng)作。側(cè)邊欄實(shí)際上是一個(gè)窗體或者是容器,實(shí)現(xiàn)展開的動(dòng)作必須在一個(gè)時(shí)間段內(nèi)逐步的增加寬度,我采用Panel作為容器的載體,在一個(gè)線程中逐步增加Panel的Width屬性。隱藏,主要使用的是Panel的Visible屬性來(lái)實(shí)現(xiàn),隱藏條件的判斷是通過(guò)判斷鼠標(biāo)位置是不是在側(cè)邊欄的邊界之外來(lái)實(shí)現(xiàn)的。鎖定,是使Panel始終處于顯示的狀態(tài),使隱藏Panel的函數(shù)不執(zhí)行來(lái)實(shí)現(xiàn)的。
界面
相關(guān)代碼:
展開:
private void toolStripButton2_MouseHover(object sender, EventArgs e)
{
//鼠標(biāo)懸停事件,展開
if (!this.panel2.Visible) //panel2為側(cè)邊欄的容器
{
Thread ts = new Thread(new ParameterizedThreadStart(TaskShowPanel));
ts.Is true; //設(shè)置為后臺(tái)線程
ts.Priority = ThreadPriority.Normal; //設(shè)置優(yōu)先級(jí)
ts.Start((Object)245); //Panel展開寬度245
}
}
//定義的線程執(zhí)行函數(shù)
private void TaskShowPanel(Object ParObject)
{
int w = (int)ParObject;
for (int i = 0; i <= w; i++)
{
ShowPanel(this.panel2, i);
}
}
private delegate void SetTextCallback(Panel p1, int w);
/// <summary>
/// 展開動(dòng)作
/// </summary>
/// <param name="p1">panel容器</param>
/// <param name="w">寬度</param>
private void ShowPanel(Panel p1,int w)
{
//跨線程訪問(wèn)
try
{
if (p1.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(ShowPanel);
p1.Invoke(d, new Object[] { p1, w });
}
else
{
p1.Width = w;
if (!p1.Visible)
{
p1.Visible = true;
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "ShowPanel函數(shù)執(zhí)行錯(cuò)誤");
}
}
隱藏:
private void listView1_MouseMove(object sender, MouseEventArgs e)
{
Point panelPoint = this.PointToClient(Control.MousePosition); //鼠標(biāo)當(dāng)前位置
//this.panel2.Location.X panel2的起始位置
//this.panel2.Width panel2的寬度
if (this.panel2.Visible && (panelPoint.X > (this.panel2.Location.X + this.panel2.Width)))
{
this.panel2.Visible = false;
}
}
鎖定:
private void button1_Click(object sender, EventArgs e)
{
//刪除隱藏事件
this.listView1.MouseMove -= new System.Windows.Forms.MouseEventHandler(this.listView1_MouseMove);
}
做的還不太成熟,但是基本的功能實(shí)現(xiàn)了,本人拋磚引玉一下,希望有大俠有更好的方法。源代碼附上
C#使用pannel實(shí)現(xiàn)動(dòng)態(tài)側(cè)邊欄
附件:http://down.51cto.com/data/2362406另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
當(dāng)前文章:C#使用Panel實(shí)現(xiàn)窗體動(dòng)態(tài)側(cè)邊欄-創(chuàng)新互聯(lián)
URL鏈接:http://vcdvsql.cn/article2/cscgic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)、微信公眾號(hào)、網(wǎng)站建設(shè)、定制網(wǎng)站、定制開發(fā)、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容