Control.DragEnter 事件
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
發生於物件拖曳至控件的界限時。
public:
event System::Windows::Forms::DragEventHandler ^ DragEnter;
public event System.Windows.Forms.DragEventHandler DragEnter;
public event System.Windows.Forms.DragEventHandler? DragEnter;
member this.DragEnter : System.Windows.Forms.DragEventHandler
Public Custom Event DragEnter As DragEventHandler
事件類型
範例
以下程式碼範例展示了兩個 ListBox 控制項間的拖放操作。 範例中當拖曳動作開始時呼叫該 DoDragDrop 方法。 拖曳動作會開始,前提是滑鼠在事件中MouseDown移動SystemInformation.DragSize超過滑鼠位置。 此 IndexFromPoint 方法用於判定事件中 MouseDown 要拖曳項目的索引。
此範例也會示範如何針對拖放作業使用自定義數據指標。 此範例要求應用程式目錄中存在兩個游標檔案, 3dwarro.cur3dwno.cur分別用於自訂拖曳游標和不可放下游標。 如果 UseCustomCursorsCheckCheckBox 被勾選,就會使用自訂游標。 自訂游標則在事件處理程序中 GiveFeedback 設定。
鍵盤狀態會在事件處理程序中評估 DragOver 右鍵 ListBox,根據 SHIFT、CTRL、ALT 或 CTRL+ALT 鍵的狀態來決定拖曳操作。
ListBox掉落地點也會在事件中DragOver決定。 若要丟棄的資料不是 String,則 DragEventArgs.Effect 在 中 被設定為 NoneDragDropEffects。 最後,掉落狀態會顯示在 DropLocationLabelLabel。
右側要丟棄 ListBox 的資料由事件處理程序決定 DragDrop ,並將 String 值加入適當位置 ListBox。 如果拖曳操作超出表單範圍,則拖放操作會在事件處理程序中被 QueryContinueDrag 取消。
這段程式碼摘錄展示了使用該 DragEnter 事件的過程。 完整程式碼範例請參見方法。DoDragDrop
void ListDragTarget_DragEnter( Object^ /*sender*/, System::Windows::Forms::DragEventArgs^ /*e*/ )
{
// Reset the label text.
DropLocationLabel->Text = "None";
}
private void ListDragTarget_DragEnter(object sender, DragEventArgs e)
{
// Reset the label text.
DropLocationLabel.Text = "None";
}
Private Sub ListDragTarget_DragEnter(ByVal sender As Object, ByVal e As DragEventArgs) Handles ListDragTarget.DragEnter
' Reset the label text.
DropLocationLabel.Text = "None"
End Sub
備註
DragEnter當使用者在拖放操作中首次將滑鼠游標拖到控制器上時,事件會觸發。
以下資訊說明與拖放操作相關的事件是如何以及何時被提出的。
此方法決定 DoDragDrop 在當前游標位置下的控制。 然後它會檢查控件是否為有效的置放目標。
若控制點為有效的投放目標, GiveFeedback 事件會觸發並指定拖放效果。 拖放效果列表請參見 DragDropEffects 列舉。
追蹤滑鼠游標位置、鍵盤狀態和滑鼠按鈕狀態的變更。
如果使用者移出視窗, DragLeave 事件就會被觸發。
若滑鼠進入另一個控制項,該控制項的 會 DragEnter 提高。
如果滑鼠移動但仍停留在同一控制範圍內, DragOver 事件會被觸發。
若鍵盤或滑鼠按鈕狀態有變化,QueryContinueDrag事件會被觸發,並根據事件QueryContinueDragEventArgs屬性的值Action決定是否繼續拖曳、資料下放或取消操作。
若 DragAction 值為
Continue, DragOver 則事件會被觸發以繼續操作,並 GiveFeedback 以新效果觸發事件,以便設定適當的視覺回饋。 有關有效落差效應的列表,請參閱列舉。DragDropEffects注意
DragOver與GiveFeedback事件會配對,當滑鼠移動到落點時,使用者會獲得最多 up-to-日期的滑鼠位置回饋。
若 的值 DragAction 為
Drop,則 drop effect 值會回傳給來源資料,因此來源應用程式可以對來源資料執行適當的操作;例如,如果操作是移動,則會切割資料。若 值 DragAction 為
Cancel, DragLeave 則事件會被觸發。注意
X Y和 的屬性DragEventArgs是顯示螢幕座標,不是客戶端座標。 以下一行 Visual C# 程式碼將屬性轉換為客戶端 Point。
Point clientPoint = targetControl.PointToClient(new Point(de.X, de.Y));
如需處理事件的詳細資訊,請參閱 處理和引發事件。