VB中鼠標沖突問題

發表于:2007-07-14來源:作者:點擊數: 標簽:
作者:解春燕 VB 中幾乎所有的控件都有DragMode屬性,該屬性確定該控件能否用鼠標拖動。DragMode屬性的設置包括如下: 0-Manual 拖動操作必須在程序中啟動 1-Automatic 用戶可以用鼠標拖動控件 當將該控件的DragMode屬性被設為Automatic時,他就不再響應通常
作者:解春燕

  VB中幾乎所有的控件都有DragMode屬性,該屬性確定該控件能否用鼠標拖動。DragMode屬性的設置包括如下:

  0-Manual 拖動操作必須在程序中啟動

  1-Automatic 用戶可以用鼠標拖動控件

  當將該控件的DragMode屬性被設為Automatic時,他就不再響應通常的鼠標事件,只能進行拖動。如果控件是個標題框,則不必擔心編輯問題,將DragMode設置為Automatic不會有什么大問題,但如果需要標題欄的Click事件,則不能將DragMode的屬性值設為Automatic。更糟的是,如果窗體上加入一個文本框控件,將其屬性設置為Automatic,然后運行,這時雖然能通過鍵盤向控件中輸入文本并移動此控件,但鼠標的編輯操作的功能就消失了。

  為解決此沖突,可以用手動實現拖動特性,調用控件的Drag方法。

  調用控件的Drag方法等于將控件的DragMode屬性設置為0-Manual,但控件也可以被拖動。

  什么時候可以調用控件的Drag方法呢?首先,要確定應用程序如何區分普通鼠標編輯操作和拖動操作??煽康姆椒ㄊ牵河肅trl或Alt鍵與鼠標組合操作來拖動控件,所有鼠標功能和平常一樣用,但如果按住Ctrl鍵再按鼠標鍵,則程序啟動拖動操作,調用控件的Drag方法。

  下面我們通過一個例子來更加清楚的理解和使用Drag方法:

  兩個文本框的DragMode屬性分別設為Automatic和Manual。如圖:
        

  標題框控件的DragDrop事件代碼為:

Private Sub Label1_DragDrop(Source As Control, X As Single, Y As Single)

  Label1.Caption = Source.Name & " was dropped "

End Sub
  這個子程序顯示放置到標題框上的控件名消息。

  因為第二個文本框的DragMode設置為Manual,所以第二個文本框可以像平常一樣編輯,但不能進行拖動操作。在第二個文本框的

  MouseDown事件加入代碼為:

Private Sub Text2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

  If Shift = 2 Then

    Text2.Drag

  End If

End Sub

  第一個文本控件可以自動放置,即只可以用鍵盤編輯第一個文本框的內容。要選擇這個控件上的文本,需要按住shift+箭頭鍵。如果在第一個文本框上拖動鼠標,則會移動文本框,將它放置到標題框控件上,標題框中的標題變成所放置的控件名。要拖動第二個文本框,則按住ctrl,在單擊該控件,然后開始拖動,控件的Drag方法在按住ctrl鍵時,從MouseDown事件中調用。

  大家可以試試,一試就會明白。拖動控件到窗體的某個地方后,控件的DragDrop屬性復位,控件的DragDrop屬性并不改變,只是像DragMode屬性暫時設置為1-Automatic一樣地工作。運行結果分別為:
        

  采用Drag方法能更好地控制操作。例如,如果源文件是空的,則不能啟動拖動操作。其實,Drag方法還可以用于需要相應鼠標事件的不可編輯控件,如標題框或命令鈕。

  總之,Drag方法是vb功能實現的一種常用方法,大家如果掌握了這種方法,對VB的學習會有很大的幫助。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97