无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Winform實(shí)現(xiàn)無(wú)邊框拖動(dòng)的兩種方式

2021-05-27 13:46 作者:付工上位機(jī)實(shí)戰(zhàn)  | 我要投稿

Winform作為桌面應(yīng)用程序的一個(gè)代表,可以說(shuō)是C#初學(xué)者快速入門(mén)最好的一種方式,然而隨著我們的開(kāi)發(fā)能力的提升,我們對(duì)UI界面的要求變得越來(lái)越高,于是我們開(kāi)始不斷優(yōu)化、升級(jí)我們的UI界面。

Winform無(wú)邊框設(shè)計(jì)是我們常用的一種方式,無(wú)邊框設(shè)計(jì)意味著沒(méi)有了應(yīng)用程序的標(biāo)題欄,也就無(wú)法直接拖動(dòng),今天主要介紹兩種實(shí)現(xiàn)無(wú)邊框拖動(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);

}
}

這種方式使用的是自己寫(xiě)代碼實(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事件,即可。


Winform實(shí)現(xiàn)無(wú)邊框拖動(dòng)的兩種方式的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
耒阳市| 广水市| 绥江县| 行唐县| 嘉鱼县| 阿克陶县| 尚志市| 乌拉特后旗| 龙泉市| 武鸣县| 时尚| 彰武县| 于都县| 博白县| 红原县| 惠水县| 高陵县| 富蕴县| 马龙县| 理塘县| 上饶县| 沛县| 新宾| 无锡市| 成安县| 监利县| 砀山县| 泗洪县| 左权县| 新疆| 博野县| 石嘴山市| 北票市| 奉新县| 巧家县| 泰安市| 永寿县| 柘荣县| 甘谷县| 霍山县| 云安县|