1. 實現方案一:可以通過mousedown、mouseup、mouseover事件實現
如果涉及到click事件的話,且mousedown事件中有判斷是左鍵動作的話,可能會與mousedown事件衝突,即click事件可能也會觸發mousedown事件。因此可改用mouseover事件,在mouseover事件中增加對左鍵動作的判斷。 //
滑鼠按下時啟用
private
void button1_mousedown(objectsender,mouseeventargs e)}//
滑鼠移動時發生,控制項位置隨時變化
private void button1_mousemove(objectsender,
mouseeventargse)
//滑鼠鬆開時發生,控制項位置確定(
e.x , e.y
表示在螢幕上的位置)
private void button1_mouseup(objectsender,mouseeventargs e)
上述方法實現的拖動是:在拖動的過程中控制項位置隨時變化,直到鬆開滑鼠為止。
private
void button1_ mousemove (objectsender, mouseeventargs e)
}private void button1_mouseup(object sender,mouseeventargs e)
上述方法避免了
與click事件衝突,且拖放過程中,控制項保持原先位置,直到拖放完成。
2. 實現方案二:通過dodragdrop方法完成
在該方案中,涉及到源器件、目標器件。源器件即想要拖放的控制項,目標器件即想要拖到哪的控制項。主要包括:源器件的mousedown(mouseover)事件、目標器件的dragenter事件(用滑鼠將源器件拖到目標器件的工作區時發生)和目標器件的dragdrop時間(拖放操作完成時發生)。
private
void button1_mousedown(objectsender, mouseeventargs e)
}private
void panel1_dragenter(objectsender, drageventargs e)
}private
void panel1_dragdrop(objectsender, drageventargs e)
//拖拽
private
void picturebox1_mousedown(object sender,mouseeventargse)}}
private
void picturebox2_dragenter(object sender,drageventargse)
else }
private
void picturebox2_dragdrop(object sender,drageventargse)
3. dragdropeffects.copy與dragdropeffects.move:
發現無論是dragdropeffects.copy還是dragdropeffects.move,實現的效果都是一樣的,即原先位置上的控制項移動到新的位置上,並沒有實現copy的效果,後來發現effect只是游標的效果,copy和move,在拖放時的游標不同,因此在拖放完成後,若要實現複製的效果的話,還要進行後續工作。
VB控制項間的拖放
新建工程,放置控制項picture1,text1,text2,複製下面的 執行 text1和text2可以互相拖放,也可以將picture1拖放給text1,text2.private subform load picture1.oledragmode 1 text1.oledropmode 1 t...
整體拖放多個選中的控制項
在建立多個子控制項時,如果選中了多個物件時,可以使用drawfocus 這個函式來繪製當前的位置。具體流程 一 在onlbuttondown uint nflags,cpoint point 事件中,儲存這個point原點 二 在onmousemove uint nflags,cpoint poin...
C WinForm 檔案的拖放到指定控制項
一 實現方案 1.首先對拖放到的控制項的allowdrop屬性設定為ture。2.新增控制項的dragenter事件,該事件會在檔案被拖放到控制項的工作區時觸發。3.在dragenter事件方法中檢查拖放檔案的格式,並對拖放檔案放置時的效果進行設定 此處設定為dragdropeffects.link...