Winform實(shí)現(xiàn)無邊框拖動(dòng)的兩種方式
Winform作為桌面應(yīng)用程序的一個(gè)代表,可以說是C#初學(xué)者快速入門最好的一種方式,然而隨著我們的開發(fā)能力的提升,我們對(duì)UI界面的要求變得越來越高,于是我們開始不斷優(yōu)化、升級(jí)我們的UI界面。
Winform無邊框設(shè)計(jì)是我們常用的一種方式,無邊框設(shè)計(jì)意味著沒有了應(yīng)用程序的標(biāo)題欄,也就無法直接拖動(dòng),今天主要介紹兩種實(shí)現(xiàn)無邊框拖動(dòng)的方式。
第一種方式:代碼實(shí)現(xiàn)
????????Point?mPoint;
????????private?void?Panel_MouseDown(object?sender,?MouseEventArgs?e)
????????{
????????????mPoint?=?new?Point(e.X,?e.Y);
????????}
????????private?void?Panel_MouseMove(object?sender,?MouseEventArgs?e)
????????{
????????????if?(e.Button?==?MouseButtons.Left)
????????????{
????????????????this.Location?=?new?Point(this.Location.X?+?e.X?-?mPoint.X,?this.Location.Y?+?e.Y?-?mPoint.Y);
????????????}
????????}
這種方式使用的是自己寫代碼實(shí)現(xiàn),將這段代碼復(fù)制到界面代碼中,然后選擇窗體中的一個(gè)控件,比如Panel或者Label,將它們的MouseDown事件綁定代碼中的MouseDown事件,MouseMove事件綁定代碼中的MouseMove事件,即可。第二種方式:Windows API
???? [DllImport("user32.dll")]
????????public?static?extern?bool?ReleaseCapture();
????????[DllImport("user32.dll")]
????????public?static?extern?bool?SendMessage(IntPtr?hwnd,?int?wMsg,?int?wParam,?int?lParam);
????????public?const?int?WM_SYSCOMMAND?=?0x0112;
????????public?const?int?SC_MOVE?=?0xF010;
????????public?const?int?HTCAPTION?=?0x0002;
????????private?void?TopPanel_MouseDown(object?sender,?MouseEventArgs?e)
????????{
????????????ReleaseCapture();
????????????SendMessage(this.Handle,?WM_SYSCOMMAND,?SC_MOVE?+?HTCAPTION,?0);
????????}
這種方式使用的是Windows底層的API函數(shù),同樣將這段代碼復(fù)制到界面代碼中,然后選擇窗體中的一個(gè)控件,比如Panel或者Label,將它們的MouseDown事件綁定代碼中的MouseDown事件,即可。
求贊求分享
1、本公眾號(hào)文章以原創(chuàng)技術(shù)為主,如果感覺內(nèi)容好看,請(qǐng)給我們一個(gè)贊;
2、如果想要分享給別人或自己,可以點(diǎn)下左下角分享或收藏;
3、如果不想錯(cuò)過我們的每篇文章,請(qǐng)給我們公眾號(hào)一個(gè)星標(biāo);
4、如果你還不會(huì)星標(biāo),請(qǐng)后臺(tái)回復(fù)關(guān)鍵詞——星標(biāo);
點(diǎn)擊?閱讀原文?,好運(yùn)到

評(píng)論
圖片
表情
