DragAction 列挙体
ドラッグ アンド ドロップ操作を継続するかどうか、および継続する場合はどのように継続するかを指定します。
<Serializable>
<ComVisible(True)>
Public Enum DragAction
[C#]
[Serializable]
[ComVisible(true)]
public enum DragAction
[C++]
[Serializable]
[ComVisible(true)]
__value public enum DragAction
[JScript]
public
Serializable
ComVisible(true)
enum DragAction
解説
この列挙体は、 QueryContinueDragEventArgs で使用されます。
メンバ
メンバ名 | 説明 |
---|---|
Cancel | 操作はドロップ メッセージなしでキャンセルされます。 |
Continue | 操作を継続します。 |
Drop | ドロップを伴って操作が停止されます。 |
使用例
[Visual Basic, C#, C++] 2 つの ListBox コントロールの間でドラッグ アンド ドロップ操作を実行する例を次に示します。この例では、ドラッグ アクションが開始したときに DoDragDrop メソッドが呼び出されます。ドラッグ操作は、 MouseDown イベント実行中のマウス位置から SystemInformation.DragSize を超えてマウスが移動したときに開始されます。 IndexFromPoint メソッドは、 MouseDown イベントで、ドラッグする項目のインデックスを判別するために使用します。
[Visual Basic, C#, C++] この例では、ドラッグ アンド ドロップ操作でカスタム カーソルを使用する方法についても示します。この例では、2 つのカーソル ファイル (3dwarro.cur
と 3dwno.cur
) がアプリケーション ディレクトリ内に存在していることを想定しています。なお、それぞれのファイルはドラッグ用のカスタム カーソルとドロップなしのカスタム カーソルを表します。カスタム カーソルは、 UseCustomCursorsCheck
CheckBox がオンになっている場合に使用されます。カスタム カーソルは、 GiveFeedback イベント ハンドラで設定されます。
[Visual Basic, C#, C++] キーボードの状態は、右側の ListBox の DragOver イベント ハンドラで評価されます。ドラッグ操作の内容は、Shift キー、Ctrl キー、Alt キー、または Ctrl + Alt キーの状態によって決まります。ドロップが発生する ListBox 内の位置は、 DragOver イベント時にも判定されます。ドロップするデータが String でない場合は、 DragEventArgs.Effect が DragDropEffects.None に設定されます。最後に、ドロップのステータスが DropLocationLabel
Label に表示されます。
[Visual Basic, C#, C++] 右側の ListBox にドロップするデータは、 DragDrop イベント ハンドラで判定されます。また、 String 値が ListBox の該当する場所に追加されます。ドラッグ操作がフォームの範囲を超えて移動した場合、ドラッグ アンド ドロップ操作は QueryContinueDrag イベント ハンドラでキャンセルされます。
[Visual Basic, C#, C++] DragAction 列挙体の使い方を次のコード例に示します。コード例全体については、 DoDragDrop メソッドのトピックを参照してください。
Private Sub ListDragSource_QueryContinueDrag(ByVal sender As Object, ByVal e As QueryContinueDragEventArgs) Handles ListDragSource.QueryContinueDrag
' Cancel the drag if the mouse moves off the form.
Dim lb as ListBox = CType(sender, System.Windows.Forms.ListBox)
If Not (lb is nothing) Then
Dim f as Form = lb.FindForm()
' Cancel the drag if the mouse moves off the form. The screenOffset
' takes into account any desktop bands that may be at the top or left
' side of the screen.
If (((Control.MousePosition.X - screenOffset.X) < f.DesktopBounds.Left) Or _
((Control.MousePosition.X - screenOffset.X) > f.DesktopBounds.Right) Or _
((Control.MousePosition.Y - screenOffset.Y) < f.DesktopBounds.Top) Or _
((Control.MousePosition.Y - screenOffset.Y) > f.DesktopBounds.Bottom)) Then
e.Action = DragAction.Cancel
End If
End if
End Sub
[C#]
private void ListDragSource_QueryContinueDrag(object sender, System.Windows.Forms.QueryContinueDragEventArgs e) {
// Cancel the drag if the mouse moves off the form.
ListBox lb = sender as ListBox;
if (lb != null) {
Form f = lb.FindForm();
// Cancel the drag if the mouse moves off the form. The screenOffset
// takes into account any desktop bands that may be at the top or left
// side of the screen.
if (((Control.MousePosition.X - screenOffset.X) < f.DesktopBounds.Left) ||
((Control.MousePosition.X - screenOffset.X) > f.DesktopBounds.Right) ||
((Control.MousePosition.Y - screenOffset.Y) < f.DesktopBounds.Top) ||
((Control.MousePosition.Y - screenOffset.Y) > f.DesktopBounds.Bottom)) {
e.Action = DragAction.Cancel;
}
}
}
[C++]
private:
void ListDragSource_QueryContinueDrag(Object* sender,
System::Windows::Forms::QueryContinueDragEventArgs* e) {
// Cancel the drag if the mouse moves off the form.
ListBox* lb = dynamic_cast<ListBox*>(sender);
if (lb != 0) {
Form* f = lb->FindForm();
// Cancel the drag if the mouse moves off the form. The screenOffset
// takes into account any desktop bands that may be at the top or left
// side of the screen.
if (((Control::MousePosition.X - screenOffset.X) < f->DesktopBounds.Left) ||
((Control::MousePosition.X - screenOffset.X) > f->DesktopBounds.Right) ||
((Control::MousePosition.Y - screenOffset.Y) < f->DesktopBounds.Top) ||
((Control::MousePosition.Y - screenOffset.Y) > f->DesktopBounds.Bottom)) {
e->Action = DragAction::Cancel;
}
}
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
名前空間: System.Windows.Forms
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
アセンブリ: System.Windows.Forms (System.Windows.Forms.dll 内)