程式設計實習

Download Report

Transcript 程式設計實習

程式設計實習
拖曳事件
拖曳事件
『拖曳』是在Windows中很常見的功能,這個功能可
以讓使用者更容易使用軟體。
來源
目的
設定拖曳的步驟
要在VB2010中使用拖曳功能要有四個步驟:。
步驟一: 於表單的Load事件中設定目地元件具有接
受拖曳功能。
步驟二: 於來源控制項之MouseDown事件中啟動來
源控制項的拖曳程序DoDragDrop方法。
步驟三: 於目的控制項之DragEnter事件中設定拖
曳效果。
步驟四: 於目的控制項之DragDrop事件中擷取拖
曳資料。
實例操作:表單元件佈置
來源
PictureBox1
目的
PictureBox2
動作程序
(2)觸發MouseDown事件
(3)進入PictureBox2瞬間
觸發DragEenter事件
按滑鼠左鍵
移動滑鼠到PictureBox1
(1)在FormLoad上設定
PictureBox2可接體拖曳
放開滑鼠左鍵
按著左鍵不
放移動滑鼠
(4)觸發DragDrop事件
步驟一:設定目的允許拖曳
在表單的 Load 事件中加下列程式:
目的控制項.AllowDrop=True
Private Sub Form1_Load (ByVal . . . . . . . .
PictureBox2.AllowDrop=True
End Sub
步驟二:啟動來源拖曳程序
在來源控制項的 MouseDown 事件中加下列程式:
來源控制項.DoDragDrop(拖曳資料,拖曳效果)
Private Sub PictureBox1_MouseDown (ByVal . . . .
sender.DoDragDrop(sender.image,DragDropEffects.ALL)
End Sub
指的就是PictureBox1
步驟三:設定目的的拖曳效果
在目的控制項的 DragEnter 事件中加下列程式:
e.Effect=拖曳效果
Private Sub PictureBox2_DragEnter (ByVal . . . .
e.Effect = DragDropEffects.All
End Sub
步驟四:擷取拖曳資料
在目的控制項的 DragDrop 事件中加下列程式:
目的控制項.Image=e.Data.GetData(DataFormats.Bitmap)
Private Sub PictureBox2 _DragDrop (ByVal . . . .
Sender.Image = e.Data.GetData(DataFormats.Bitmap)
End Sub
補充:控制項的自訂資料
在物件的 Tag 屬性可由設計者自行定義文字說明,
以此定義來賦予元件註解,以便程式判斷。
控制項.Tag = 字串
補充:拖曳效果
托曳效果的值可設成DragDropEffects列舉型別,
其值有下列幾種:
值
說明
All
可啟動Copy、Move、Scroll托曳效果
Copy
將來源資料複製到目的
Move
將來源資料移動至目的
Link
將來源資料製作捷徑至目的
Scroll
將來源資料複製並捲動至目的
None
目的不接受托曳資料
返回
補充:事件參數1(sender)
Sender為所有事件程序的第一個參數,
它表示觸發事件的元件,例如:
Button1的Click事件中,將來傳回的
sender指的就是Button1,因此我們就
可以用sender來存取Button1。
補充:事件參數2(e)
e為所有事件程序的第二個參數,它表
示與此事件相關的資訊,例如:在滑鼠
的KeyDown事件中,e參數會傳回此時滑
鼠所在的座標(以e.X、e.Y讀取)、或按
了哪一個滑鼠鍵。
補充:共用事件的設定方法一
若多個物件要共用事件最簡單的建立方式如下(以
Button1及Button2共用Click為例):
Private Sub Button1_Click(ByVal sender...) Handle Button1.Click,Button2.Click
Dim InNum As Single
InNum = Val(txtInNum.Text)
.
將要共用事件的物件及
.
事件皆加在此程序後,
End Sub
中間以逗號分隔
上述方法可以很清楚看到那些元件共用事件,但若
共用的物件很多時,會造成程序後方的文字設得變
得很長不好閱讀。
補充:共用事件的設定方法二
步驟一: 先以編輯器建立一基本事件(以Click為
例),然將Handle(含)以下的文字刪除。
Private Sub Button1_Click(ByVal sender...) Handle Button1.Click,Button2.Click
Dim InNum As Single
InNum = Val(txtInNum.Text)
.
將事件附屬設定刪除
.
End Sub
補充:共用事件的設定方法二
步驟二: 以下列語法設定物件和事件的附屬關係。
AddHandler 物件名稱.事件,AddressOf 事件程序名稱
上述指令要建立在FormLoad事件中,如下:
Private Sub Form1_Click(ByVal sender....
Dim InNum As Single
InNum = Val(txtInNum.Text)
AddHandler Button1.Click,AddressOf Button1_Click
AddHandler Button2.Click,AddressOf Button1_Click
End Sub
依上述語法設定對應