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 依上述語法設定對應