DragDropEffects DragDropEffects DragDropEffects DragDropEffects Enum

定義

ドラッグ アンド ドロップ操作の効果を指定します。Specifies the possible effects of a drag-and-drop operation.

この列挙型には FlagsAttribute 属性があり、メンバー値ではビットごとの組み合わせを使用できます。

public enum class DragDropEffects
[System.Flags]
public enum DragDropEffects
type DragDropEffects = 
Public Enum DragDropEffects
継承
DragDropEffectsDragDropEffectsDragDropEffectsDragDropEffects
属性

フィールド

All All All All -2147483645

CopyMove、および Scroll の各効果の組み合わせ。The combination of the Copy, Move, and Scroll effects.

Copy Copy Copy Copy 1

ドラッグ ソースのデータはドロップ ターゲットにコピーされます。The data from the drag source is copied to the drop target.

4

ドラッグ ソースのデータはドロップ ターゲットにリンクされます。The data from the drag source is linked to the drop target.

Move Move Move Move 2

ドラッグ ソースのデータはドロップ ターゲットに移動されます。The data from the drag source is moved to the drop target.

None None None None 0

ドロップ ターゲットはデータを受け付けません。The drop target does not accept the data.

Scroll Scroll Scroll Scroll -2147483648

現在表示されていない、ターゲット内のドロップ位置を表示できるように、ドラッグ中にターゲットをスクロールできます。The target can be scrolled while dragging to locate a drop position that is not currently visible in the target.

次の例では、 DragDropEffectsドラッグアンドドロップ操作中に、ユーザーがマウスをドロップ先の上に移動したときの列挙体の使用方法を示します。The following example demonstrates using the DragDropEffects enumeration when the user moves the mouse over the drop target during a drag-and-drop operation. この例は、 Control.DoDragDropメソッドに提供されているより大きな例の一部です。This example is part of a larger example provided for the Control.DoDragDrop method.

void ListDragTarget_DragOver( Object^ /*sender*/, System::Windows::Forms::DragEventArgs^ e )
{
   // Determine whether string data exists in the drop data. If not, then
   // the drop effect reflects that the drop cannot occur.
   if (  !e->Data->GetDataPresent( System::String::typeid ) )
   {
      e->Effect = DragDropEffects::None;
      DropLocationLabel->Text = "None - no string data.";
      return;
   }

   // Set the effect based upon the KeyState.
   if ( (e->KeyState & (8 + 32)) == (8 + 32) && ((e->AllowedEffect & DragDropEffects::Link) == DragDropEffects::Link) )
   {
      // KeyState 8 + 32 = CTL + ALT
      // Link drag-and-drop effect.
      e->Effect = DragDropEffects::Link;
   }
   else
   if ( (e->KeyState & 32) == 32 && ((e->AllowedEffect & DragDropEffects::Link) == DragDropEffects::Link) )
   {
      // ALT KeyState for link.
      e->Effect = DragDropEffects::Link;
   }
   else
   if ( (e->KeyState & 4) == 4 && ((e->AllowedEffect & DragDropEffects::Move) == DragDropEffects::Move) )
   {
      // SHIFT KeyState for move.
      e->Effect = DragDropEffects::Move;
   }
   else
   if ( (e->KeyState & 8) == 8 && ((e->AllowedEffect & DragDropEffects::Copy) == DragDropEffects::Copy) )
   {
      // CTL KeyState for copy.
      e->Effect = DragDropEffects::Copy;
   }
   else
   if ( (e->AllowedEffect & DragDropEffects::Move) == DragDropEffects::Move )
   {
      // By default, the drop action should be move, if allowed.
      e->Effect = DragDropEffects::Move;
   }
   else
            e->Effect = DragDropEffects::None;





   
   // Get the index of the item the mouse is below.
   // The mouse locations are relative to the screen, so they must be
   // converted to client coordinates.
   indexOfItemUnderMouseToDrop = ListDragTarget->IndexFromPoint( ListDragTarget->PointToClient( Point(e->X,e->Y) ) );
   
   // Updates the label text.
   if ( indexOfItemUnderMouseToDrop != ListBox::NoMatches )
   {
      DropLocationLabel->Text = String::Concat( "Drops before item # ", (indexOfItemUnderMouseToDrop + 1) );
   }
   else
            DropLocationLabel->Text = "Drops at the end.";
}
private void ListDragTarget_DragOver(object sender, System.Windows.Forms.DragEventArgs e) 
{

    // Determine whether string data exists in the drop data. If not, then
    // the drop effect reflects that the drop cannot occur.
    if (!e.Data.GetDataPresent(typeof(System.String))) {

        e.Effect = DragDropEffects.None;
        DropLocationLabel.Text = "None - no string data.";
        return;
    }

    // Set the effect based upon the KeyState.
    if ((e.KeyState & (8+32)) == (8+32) && 
        (e.AllowedEffect & DragDropEffects.Link) == DragDropEffects.Link) {
        // KeyState 8 + 32 = CTL + ALT

        // Link drag-and-drop effect.
        e.Effect = DragDropEffects.Link;

    } else if ((e.KeyState & 32) == 32 && 
        (e.AllowedEffect & DragDropEffects.Link) == DragDropEffects.Link) {

        // ALT KeyState for link.
        e.Effect = DragDropEffects.Link;

    } else if ((e.KeyState & 4) == 4 && 
        (e.AllowedEffect & DragDropEffects.Move) == DragDropEffects.Move) {

        // SHIFT KeyState for move.
        e.Effect = DragDropEffects.Move;

    } else if ((e.KeyState & 8) == 8 && 
        (e.AllowedEffect & DragDropEffects.Copy) == DragDropEffects.Copy) {

        // CTL KeyState for copy.
        e.Effect = DragDropEffects.Copy;

    } else if ((e.AllowedEffect & DragDropEffects.Move) == DragDropEffects.Move)  {

        // By default, the drop action should be move, if allowed.
        e.Effect = DragDropEffects.Move;

    } else
        e.Effect = DragDropEffects.None;
        
    // Get the index of the item the mouse is below. 

    // The mouse locations are relative to the screen, so they must be 
    // converted to client coordinates.

    indexOfItemUnderMouseToDrop = 
        ListDragTarget.IndexFromPoint(ListDragTarget.PointToClient(new Point(e.X, e.Y)));

    // Updates the label text.
    if (indexOfItemUnderMouseToDrop != ListBox.NoMatches){

        DropLocationLabel.Text = "Drops before item #" + (indexOfItemUnderMouseToDrop + 1);
    } else
        DropLocationLabel.Text = "Drops at the end.";

}
Private Sub ListDragTarget_DragOver(ByVal sender As Object, ByVal e As DragEventArgs) Handles ListDragTarget.DragOver
    ' Determine whether string data exists in the drop data. If not, then
    ' the drop effect reflects that the drop cannot occur.
    If Not (e.Data.GetDataPresent(GetType(System.String))) Then

        e.Effect = DragDropEffects.None
        DropLocationLabel.Text = "None - no string data."
        Return
    End If

    ' Set the effect based upon the KeyState.
    If ((e.KeyState And (8 + 32)) = (8 + 32) And _
        (e.AllowedEffect And DragDropEffects.Link) = DragDropEffects.Link) Then
        ' KeyState 8 + 32 = CTL + ALT

        ' Link drag-and-drop effect.
        e.Effect = DragDropEffects.Link

    ElseIf ((e.KeyState And 32) = 32 And _
        (e.AllowedEffect And DragDropEffects.Link) = DragDropEffects.Link) Then

        ' ALT KeyState for link.
        e.Effect = DragDropEffects.Link

    ElseIf ((e.KeyState And 4) = 4 And _
        (e.AllowedEffect And DragDropEffects.Move) = DragDropEffects.Move) Then

        ' SHIFT KeyState for move.
        e.Effect = DragDropEffects.Move

    ElseIf ((e.KeyState And 8) = 8 And _
        (e.AllowedEffect And DragDropEffects.Copy) = DragDropEffects.Copy) Then

        ' CTL KeyState for copy.
        e.Effect = DragDropEffects.Copy

    ElseIf ((e.AllowedEffect And DragDropEffects.Move) = DragDropEffects.Move) Then

        ' By default, the drop action should be move, if allowed.
        e.Effect = DragDropEffects.Move

    Else
        e.Effect = DragDropEffects.None
    End If

    ' Gets the index of the item the mouse is below. 

    ' The mouse locations are relative to the screen, so they must be 
    ' converted to client coordinates.

    indexOfItemUnderMouseToDrop = _
        ListDragTarget.IndexFromPoint(ListDragTarget.PointToClient(New Point(e.X, e.Y)))

    ' Updates the label text.
    If (indexOfItemUnderMouseToDrop <> ListBox.NoMatches) Then

        DropLocationLabel.Text = "Drops before item #" & (indexOfItemUnderMouseToDrop + 1)
    Else
        DropLocationLabel.Text = "Drops at the end."
    End If

End Sub

注釈

この列挙体は、、 DragEventArgs GiveFeedbackEventArgs、およびControlの各クラスによって使用されます。This enumeration is used by the DragEventArgs, GiveFeedbackEventArgs, and Control classes.

を使用DragDropEffectsすると、ドラッグアンドドロップ操作のためにさまざまなマウスポインターを表示できます。You can use DragDropEffects to display different mouse pointers for drag-and-drop operations. たとえば、ドラッグアンドドロップ操作のためのプラス記号CopyMoveドラッグアンドドロップ操作の矢印記号、ドラッグアンドドロップ操作のためNoneの線を含む赤い円の記号を表示するなどの操作を行うことができます。For example, you can display a plus symbol for a Copy drag-and-drop operation, an arrow symbol for a Move drag-and-drop operation, or a red circle with a line through it symbol for a None drag-and-drop operation.

現在表示されていないターゲットの位置にデータをドロップする場合は、ドラッグ中にターゲットをスクロールできます。If you want to drop data at a position in the target that is not currently visible, you could scroll the target while dragging. ターゲットがスクロールをサポートしていない場合は、ドラッグアンドドロップ操作を開始する前に、ドロップ位置がターゲットに表示されていることを確認する必要があります。If a target does not support scrolling, you must make sure that the drop position is visible in the target before you begin the drag-and-drop operation. ターゲットをスクロールする必要があるシナリオを次に示します。The following are some scenarios when you might want to scroll a target:

  • テキストをドキュメントにドラッグしているときに、ドキュメントウィンドウに表示されていない位置にテキストをドロップします。You're dragging text into a document, and you want to drop the text at a position not visible in the document window.

  • ファイルをファイルツリーにドラッグしているときに、ファイルツリーに表示されていないノードにファイルをドロップします。You're dragging a file into a file tree, and you want to drop the file on a node not visible in the file tree.

適用対象

こちらもご覧ください