有時(shí)候在WinForm程序中,我們需要用鼠標(biāo)移動(dòng)程序窗口中的對(duì)象(例如圖片對(duì)象等)的位置,可以通過(guò)定義控件的鼠標(biāo)事件來(lái)實(shí)現(xiàn)。以命名為pictureBox1的PictureBox控件為例,分別定義它的MouseDown(按下鼠標(biāo)按鈕)、MouseMove(移動(dòng)鼠標(biāo))、MouseUp(釋放鼠標(biāo)按鈕)三個(gè)事件,代碼如下:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-599453.html
//獲取和設(shè)置控件是否隨鼠標(biāo)移動(dòng)
bool moveFlag = false;
//按下鼠標(biāo)時(shí)鼠標(biāo)的X和Y坐標(biāo)
int xPos,yPos;
private void pictureBox1_MouseDown(object sender, MouseEventArgs e){
//當(dāng)鼠標(biāo)位于控件上并按下按鈕時(shí),設(shè)置moveFlag為True,控件可隨鼠標(biāo)移動(dòng)
moveFlag = true;
//設(shè)置按下按鈕時(shí)鼠標(biāo)的坐標(biāo)值
xPos = e.X;yPos=e.Y;
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e){
//如果沒(méi)有捕獲到MouseDown事件,則返回
if(!moveFlag)
return;
//把鼠標(biāo)移動(dòng)過(guò)程中的坐標(biāo)值與之前按下按鈕時(shí)鼠標(biāo)坐標(biāo)的初始值(xPos和yPos)進(jìn)行計(jì)算,得出控件的Top和Left值
pictureBox1.Top += (e.Y - yPos);
pictureBox1.Left+= (e.X - xPos);
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e){
//釋放鼠標(biāo)按鈕,設(shè)置moveFlag為False,控件不能隨鼠標(biāo)移動(dòng),如果不設(shè)置的話,即使釋放按鈕,控件依然隨鼠標(biāo)移動(dòng)
moveFlag = false;
}
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-599453.html
到了這里,關(guān)于C#:WinForm應(yīng)用程序中用鼠標(biāo)移動(dòng)控件位置的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!