国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

窗體標題欄外的拖動操作

2024-07-21 02:16:24
字體:
供稿:網(wǎng)友
窗體標題欄外的拖動操作

(作者:張均洪) 2004-9-3

我們知道對窗體的拖動只需要點住標題欄,拖動鼠標就可以了.但有些時候我們想在窗體的標題欄外的區(qū)域?qū)嵭型蟿哟绑w的操作.這時就要需要我們自已寫些代碼了,下面是我的做法,供大家參觀.

新建一個窗體form1,并放入兩個radiobutton控件,第一個是確定是否窗體拖動,第三個是確定是否指定某一區(qū)域進行窗體拖動.

以下是窗體代碼:

using system;
using system.collections.generic;
using system.componentmodel;
using system.data;
using system.drawing;
using system.windows.forms;
using system.io;



namespace windowsapplication1
{
partial class form1 : form
{
point _startxy; //鼠標按下的位置
bool _movedown=false; //鼠標是不是按下了
//指定一個區(qū)域,好寫字在onpaint中
rectangle _rec = new rectangle(50, 50, 70, 70);
public form1()
{
initializecomponent();
}

protected override void onmousedown(mouseeventargs e)
{
//要移動嗎?由按下鼠標(onmousedown)確定哈
bool oktomove=false;
base.onmousedown(e);

if(this.radiobutton1.checked)
{
oktomove=true;
}
else
{
//如果按下鼠標的點坐標在_rec指定的區(qū)域內(nèi)
//那么我們同意移動窗體操作哈。
if(this._rec.contains(this.pointtoclient(mouseposition)))
{
oktomove = true;

}
}
//如果同意移動,就把按下鼠標一瞬的坐標給_startxy
//并同意按著鼠標移動。
if(oktomove==true)
{
//把當前的鼠標位置賦給變量
_startxy = mouseposition;
_movedown = true;
}
}

protected override void onmousemove(mouseeventargs e)
{
base.onmousemove(e);
//如果同意按著鼠標移動,就把移動的量給變量
//以便窗體按你的量移動。
if (_movedown)
{
int xdiff,ydiff;
xdiff = mouseposition.x - _startxy.x;
ydiff = mouseposition.y - _startxy.y;
//改變窗體位置
this.left = this.left + xdiff;
this.top = this.top + ydiff;
//把新位置給_startxy變量了哈
_startxy = mouseposition;
}
}

protected override void onmouseup(mouseeventargs e)
{
base.onmouseup(e);
_movedown = false;

}

protected override void onpaint(painteventargs e)
{
base.onpaint(e);
//要一支新畫筆,向net要哈
solidbrush b = new solidbrush(color.red);
if (radiobutton2.checked)
{
//填充_rec的區(qū)域,筆的顏色是紅的哈
e.graphics.fillrectangle(b, _rec);
//改變筆的顏色
b.color = color.white;
//重新定義一個區(qū)域,這個區(qū)域其實就是_rec變量的區(qū)域
rectanglef recf = new rectanglef(_rec.x,
_rec.y,
_rec.width,
_rec.height);
//在這個區(qū)域?qū)憥讉€字呢
e.graphics.drawstring("click on me drag", font, b, recf);
}
else
{
//如果不同意用區(qū)域改變窗體位置,就把背景設為窗體的
//顏色,免得影響視覺。
b.color = backcolor;
//把這個區(qū)域涂了
e.graphics.fillrectangle(b, _rec);
}
b.dispose();//把筆丟了,免得占我地方
}


private void radiobutton2_checkedchanged(object sender, eventargs e)
{
this.invalidate(this._rec);//使_rec指定的地方無效了
}

}
}




發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 湖南省| 长兴县| 益阳市| 天等县| 普兰县| 淄博市| 日喀则市| 炉霍县| 南阳市| 定州市| 石渠县| 郯城县| 浦江县| 通河县| 蓝田县| 双流县| 黄大仙区| 滦平县| 台中市| 金寨县| 孟连| 汽车| 墨玉县| 卢氏县| 龙川县| 莫力| 青海省| 延津县| 南昌县| 兴宁市| 沐川县| 大埔县| 徐州市| 隆安县| 织金县| 和顺县| 河北省| 祁门县| 宽城| 聂拉木县| 博客|