ItemDragEventHandler デリゲートとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > ItemDragEventHandler デリゲートの意味・解説 

ItemDragEventHandler デリゲート

ListView コントロールまたは TreeView コントロールの ItemDrag イベント処理するメソッド表します

名前空間: System.Windows.Forms
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)
構文構文

Public Delegate Sub ItemDragEventHandler
 ( _
    sender As Object, _
    e As ItemDragEventArgs _
)
Dim instance As New ItemDragEventHandler(AddressOf
 HandlerMethod)
public delegate void ItemDragEventHandler (
    Object sender,
    ItemDragEventArgs e
)
public delegate void ItemDragEventHandler (
    Object^ sender, 
    ItemDragEventArgs^ e
)
/** @delegate */
public delegate void ItemDragEventHandler (
    Object sender, 
    ItemDragEventArgs e
)
JScript では、デリゲート使用できますが、新規に宣言することはできません。

パラメータ

sender

イベントソース

e

イベント データ格納している ItemDragEventArgs。

解説解説
使用例使用例

TreeView コントロール内のドラッグ アンド ドロップ操作有効にする方法次の例に示します。この例では、ノードを、そのノードの子孫でない他のノードドラッグできますドラッグしたノードその子孫ノードはすべて、ドラッグノードの子なりますマウス左ボタン使用すると、ドラッグしたノード目的ノード移動されます。マウス右ボタン使用すると、ドラッグしたノード目的ノードコピーされます。

Imports System
Imports System.Drawing
Imports System.Windows.Forms

Public Class Form1
    Inherits Form
    Private treeView1 As TreeView

    Public Sub New()
        treeView1 = New TreeView()
        
        Me.SuspendLayout()
        
        ' Initialize treeView1.
        treeView1.AllowDrop = True
        treeView1.Dock = DockStyle.Fill
        
        ' Add nodes to treeView1.
        Dim node As TreeNode
        Dim x As Integer
        For x = 0 To 3
            ' Add a root node to treeView1.
            node = treeView1.Nodes.Add(String.Format("Node{0}",
 x * 4))
            Dim y As Integer
            For y = 1 To 4
                ' Add a child node to the previously added node.
                node = node.Nodes.Add(String.Format("Node{0}",
 x * 4 + y))
            Next y
        Next x

        ' Add event handlers for the required drag events.
        AddHandler treeView1.ItemDrag, AddressOf
 treeView1_ItemDrag
        AddHandler treeView1.DragEnter, AddressOf
 treeView1_DragEnter
        AddHandler treeView1.DragOver, AddressOf
 treeView1_DragOver
        AddHandler treeView1.DragDrop, AddressOf
 treeView1_DragDrop

        ' Initialize the form.
        Me.ClientSize = New Size(292, 273)
        Me.Controls.Add(treeView1)

        Me.ResumeLayout(False)
    End Sub 'New

    Shared Sub Main()
        Application.Run(New Form1)
    End Sub 'Main

    Private Sub treeView1_ItemDrag(ByVal
 sender As Object, ByVal
 e As ItemDragEventArgs)

        ' Move the dragged node when the left mouse button is used.
        If e.Button = MouseButtons.Left Then
            DoDragDrop(e.Item, DragDropEffects.Move)

        ' Copy the dragged node when the right mouse button is used.
        ElseIf e.Button = MouseButtons.Right Then
            DoDragDrop(e.Item, DragDropEffects.Copy)
        End If
    End Sub 'treeView1_ItemDrag

    ' Set the target drop effect to the effect 
    ' specified in the ItemDrag event handler.
    Private Sub treeView1_DragEnter(ByVal
 sender As Object, ByVal
 e As DragEventArgs)
        e.Effect = e.AllowedEffect
    End Sub 'treeView1_DragEnter

    ' Select the node under the mouse pointer to indicate the 
    ' expected drop location.
    Private Sub treeView1_DragOver(ByVal
 sender As Object, ByVal
 e As DragEventArgs)
        ' Retrieve the client coordinates of the mouse position.
        Dim targetPoint As Point = treeView1.PointToClient(new
 Point(e.X, e.Y))

        ' Select the node at the mouse position.
        treeView1.SelectedNode = treeView1.GetNodeAt(targetPoint)
    End Sub 'treeView1_DragOver

    Private Sub treeView1_DragDrop(ByVal
 sender As Object, ByVal
 e As DragEventArgs)

        ' Retrieve the client coordinates of the drop location.
        Dim targetPoint As Point = treeView1.PointToClient(New
 Point(e.X, e.Y))

        ' Retrieve the node at the drop location.
        Dim targetNode As TreeNode = treeView1.GetNodeAt(targetPoint)

        ' Retrieve the node that was dragged.
        Dim draggedNode As TreeNode = CType(e.Data.GetData(GetType(TreeNode)),
 TreeNode)

        ' Confirm that the node at the drop location is not 
        ' the dragged node or a descendant of the dragged node.
        If Not draggedNode.Equals(targetNode)
 AndAlso Not ContainsNode(draggedNode, targetNode)
 Then

            ' If it is a move operation, remove the node from its current
 
            ' location and add it to the node at the drop location.
            If e.Effect = DragDropEffects.Move Then
                draggedNode.Remove()
                targetNode.Nodes.Add(draggedNode)

            ' If it is a copy operation, clone the dragged node 
            ' and add it to the node at the drop location.
            ElseIf e.Effect = DragDropEffects.Copy Then
                targetNode.Nodes.Add(CType(draggedNode.Clone(), TreeNode))
            End If

            ' Expand the node at the location 
            ' to show the dropped node.
            targetNode.Expand()
        End If
    End Sub 'treeView1_DragDrop

    ' Determine whether one node is a parent 
    ' or ancestor of a second node.
    Private Function ContainsNode(ByVal
 node1 As TreeNode, ByVal node2 As
 TreeNode) As Boolean

        ' Check the parent node of the second node.
        If node2.Parent Is Nothing
 Then
            Return False
        End If
        If node2.Parent.Equals(node1) Then
            Return True
        End If

        ' If the parent node is not null or equal to the first node,
 
        ' call the ContainsNode method recursively using the parent
 of 
        ' the second node.
        Return ContainsNode(node1, node2.Parent)
    End Function 'ContainsNode

End Class 'Form1 
using System;
using System.Drawing;
using System.Windows.Forms;

public class Form1 : Form
{
    private TreeView treeView1;

    public Form1()
    {
        treeView1 = new TreeView();

        this.SuspendLayout();

        // Initialize treeView1.
        treeView1.AllowDrop = true;
        treeView1.Dock = DockStyle.Fill;

        // Add nodes to treeView1.
        TreeNode node;
        for (int x = 0; x < 3; ++x)
        {
            // Add a root node to treeView1.
            node = treeView1.Nodes.Add(String.Format("Node{0}", x*4));
            for (int y = 1; y < 4; ++y)
            {
                // Add a child node to the previously added node.
                node = node.Nodes.Add(String.Format("Node{0}", x*4 + y));
            }
        }

        // Add event handlers for the required drag events.
        treeView1.ItemDrag += new ItemDragEventHandler(treeView1_ItemDrag);
        treeView1.DragEnter += new DragEventHandler(treeView1_DragEnter);
        treeView1.DragOver += new DragEventHandler(treeView1_DragOver);
        treeView1.DragDrop += new DragEventHandler(treeView1_DragDrop);

        // Initialize the form.
        this.ClientSize = new Size(292, 273);
        this.Controls.Add(treeView1);

        this.ResumeLayout(false);
    }

    [STAThread]
    static void Main() 
    {
        Application.Run(new Form1());
    }

    private void treeView1_ItemDrag(object
 sender, ItemDragEventArgs e)
    {
        // Move the dragged node when the left mouse button is used.
        if (e.Button == MouseButtons.Left)
        {
            DoDragDrop(e.Item, DragDropEffects.Move);
        }

        // Copy the dragged node when the right mouse button is used.
        else if (e.Button == MouseButtons.Right)
        {
            DoDragDrop(e.Item, DragDropEffects.Copy);
        }
    }

    // Set the target drop effect to the effect 
    // specified in the ItemDrag event handler.
    private void treeView1_DragEnter(object
 sender, DragEventArgs e)
    {
        e.Effect = e.AllowedEffect;
    }

    // Select the node under the mouse pointer to indicate the 
    // expected drop location.
    private void treeView1_DragOver(object
 sender, DragEventArgs e)
    {
        // Retrieve the client coordinates of the mouse position.
        Point targetPoint = treeView1.PointToClient(new Point(e.X,
 e.Y));

        // Select the node at the mouse position.
        treeView1.SelectedNode = treeView1.GetNodeAt(targetPoint);
    }

    private void treeView1_DragDrop(object
 sender, DragEventArgs e)
    {
        // Retrieve the client coordinates of the drop location.
        Point targetPoint = treeView1.PointToClient(new Point(e.X,
 e.Y));

        // Retrieve the node at the drop location.
        TreeNode targetNode = treeView1.GetNodeAt(targetPoint);

        // Retrieve the node that was dragged.
        TreeNode draggedNode = (TreeNode)e.Data.GetData(typeof(TreeNode));

        // Confirm that the node at the drop location is not 
        // the dragged node or a descendant of the dragged node.
        if (!draggedNode.Equals(targetNode) && !ContainsNode(draggedNode,
 targetNode))
        {
            // If it is a move operation, remove the node from its current
 
            // location and add it to the node at the drop location.
            if (e.Effect == DragDropEffects.Move)
            {
                draggedNode.Remove();
                targetNode.Nodes.Add(draggedNode);
            }

            // If it is a copy operation, clone the dragged node 
            // and add it to the node at the drop location.
            else if (e.Effect == DragDropEffects.Copy)
            {
                targetNode.Nodes.Add((TreeNode)draggedNode.Clone());
            }

            // Expand the node at the location 
            // to show the dropped node.
            targetNode.Expand();
        }
    }

    // Determine whether one node is a parent 
    // or ancestor of a second node.
    private bool ContainsNode(TreeNode node1,
 TreeNode node2)
    {
        // Check the parent node of the second node.
        if (node2.Parent == null) return
 false;
        if (node2.Parent.Equals(node1)) return
 true;

        // If the parent node is not null or equal to the first node,
 
        // call the ContainsNode method recursively using the parent
 of 
        // the second node.
        return ContainsNode(node1, node2.Parent);
    }

}
#using <System.dll>
#using <System.Windows.Forms.dll>
#using <System.Drawing.dll>

using namespace System;
using namespace System::Drawing;
using namespace System::Windows::Forms;
public ref class Form1: public
 Form
{
private:
   TreeView^ treeView1;

public:
   Form1()
   {
      treeView1 = gcnew TreeView;
      this->SuspendLayout();
      
      // Initialize treeView1.
      treeView1->AllowDrop = true;
      treeView1->Dock = DockStyle::Fill;
      
      // Add nodes to treeView1.
      TreeNode^ node;
      for ( int x = 0; x < 3; ++x )
      {
         
         // Add a root node to treeView1.
         node = treeView1->Nodes->Add( String::Format( "Node{0}",
 x * 4 ) );
         for ( int y = 1; y < 4; ++y )
         {
            
            // Add a child node to the previously added node.
            node = node->Nodes->Add( String::Format( "Node{0}", x
 * 4 + y ) );

         }
      }
      
      // Add event handlers for the required drag events.
      treeView1->ItemDrag += gcnew ItemDragEventHandler( this,
 &Form1::treeView1_ItemDrag );
      treeView1->DragEnter += gcnew DragEventHandler( this,
 &Form1::treeView1_DragEnter );
      treeView1->DragOver += gcnew DragEventHandler( this,
 &Form1::treeView1_DragOver );
      treeView1->DragDrop += gcnew DragEventHandler( this,
 &Form1::treeView1_DragDrop );
      
      // Initialize the form.
      this->ClientSize = System::Drawing::Size( 292, 273 );
      this->Controls->Add( treeView1 );
      this->ResumeLayout( false );
   }

private:
   void treeView1_ItemDrag( Object^ /*sender*/, ItemDragEventArgs^
 e )
   {
      
      // Move the dragged node when the left mouse button is used.
      if ( e->Button == ::MouseButtons::Left )
      {
         DoDragDrop( e->Item, DragDropEffects::Move );
      }
      // Copy the dragged node when the right mouse button is used.
      else
      
      // Copy the dragged node when the right mouse button is used.
      if ( e->Button == ::MouseButtons::Right )
      {
         DoDragDrop( e->Item, DragDropEffects::Copy );
      }
   }

   // Set the target drop effect to the effect 
   // specified in the ItemDrag event handler.
   void treeView1_DragEnter( Object^ /*sender*/, DragEventArgs^
 e )
   {
      e->Effect = e->AllowedEffect;
   }

   // Select the node under the mouse pointer to indicate the 
   // expected drop location.
   void treeView1_DragOver( Object^ /*sender*/, DragEventArgs^
 e )
   {
      // Retrieve the client coordinates of the mouse position.
      Point targetPoint = treeView1->PointToClient( Point(e->X,e->Y) );
      
      // Select the node at the mouse position.
      treeView1->SelectedNode = treeView1->GetNodeAt( targetPoint );
   }

   void treeView1_DragDrop( Object^ /*sender*/, DragEventArgs^
 e )
   {
      // Retrieve the client coordinates of the drop location.
      Point targetPoint = treeView1->PointToClient( Point(e->X,e->Y) );
      
      // Retrieve the node at the drop location.
      TreeNode^ targetNode = treeView1->GetNodeAt( targetPoint );
      
      // Retrieve the node that was dragged.
      TreeNode^ draggedNode = dynamic_cast<TreeNode^>(e->Data->GetData(
 TreeNode::typeid ));
      
      // Confirm that the node at the drop location is not 
      // the dragged node or a descendant of the dragged node.
      if (  !draggedNode->Equals( targetNode ) && 
 !ContainsNode( draggedNode, targetNode ) )
      {
         
         // If it is a move operation, remove the node from its current
 
         // location and add it to the node at the drop location.
         if ( e->Effect == DragDropEffects::Move )
         {
            draggedNode->Remove();
            targetNode->Nodes->Add( draggedNode );
         }
         // If it is a copy operation, clone the dragged node 
         // and add it to the node at the drop location.
         else
         
         // If it is a copy operation, clone the dragged node 
         // and add it to the node at the drop location.
         if ( e->Effect == DragDropEffects::Copy )
         {
            targetNode->Nodes->Add( dynamic_cast<TreeNode^>(draggedNode->Clone())
 );
         }
         
         // Expand the node at the location 
         // to show the dropped node.
         targetNode->Expand();
      }
   }

   // Determine whether one node is a parent 
   // or ancestor of a second node.
   bool ContainsNode( TreeNode^ node1, TreeNode^ node2 )
   {
      // Check the parent node of the second node.
      if ( node2->Parent == nullptr )
            return false;

      if ( node2->Parent->Equals( node1 ) )
            return true;
      
      // If the parent node is not null or equal to the first node,
 
      // call the ContainsNode method recursively using the parent of
 
      // the second node.
      return ContainsNode( node1, node2->Parent );
   }
};

[STAThread]
int main()
{
   Application::Run( gcnew Form1 );
}
import System.*;
import System.Drawing.*;
import System.Windows.Forms.*;

public class Form1 extends Form
{
    private TreeView treeView1;

    public Form1()
    {
        treeView1 = new TreeView();

        this.SuspendLayout();
        // Initialize treeView1.
        treeView1.set_AllowDrop(true);
        treeView1.set_Dock(DockStyle.Fill);
        // Add nodes to treeView1.
        TreeNode node;
        for (int x = 0; x < 3; ++x) {
            // Add a root node to treeView1.
            node = treeView1.get_Nodes().Add(String.
                Format("Node{0}", (Int32)(x * 4)));
            for (int y = 1; y < 4; ++y)
 {
                // Add a child node to the previously added node.
                node = node.get_Nodes().Add(String.
                    Format("Node{0}", (Int32)(x * 4 + y)));
            }
        }
        // Add event handlers for the required drag events.
        treeView1.add_ItemDrag(new ItemDragEventHandler(treeView1_ItemDrag));
        treeView1.add_DragEnter(new DragEventHandler(treeView1_DragEnter));
        treeView1.add_DragOver(new DragEventHandler(treeView1_DragOver));
        treeView1.add_DragDrop(new DragEventHandler(treeView1_DragDrop));
        // Initialize the form.
        this.set_ClientSize(new Size(292, 273));
        this.get_Controls().Add(treeView1);

        this.ResumeLayout(false);
    } //Form1

    /** @attribute STAThread()
     */
    public static void main(String[]
 args)
    {
        Application.Run(new Form1());
    } //main

    private void treeView1_ItemDrag(Object
 sender, ItemDragEventArgs e)
    {
        // Move the dragged node when the left mouse button is used.
        if (e.get_Button().Equals(get_MouseButtons().Left)) {
            DoDragDrop(e.get_Item(), DragDropEffects.Move);
        }
        // Copy the dragged node when the right mouse button is used.
        else {
            if (e.get_Button().Equals(get_MouseButtons().Right))
 {
                DoDragDrop(e.get_Item(), DragDropEffects.Copy);
            }
        }
    } //treeView1_ItemDrag

    // Set the target drop effect to the effect 
    // specified in the ItemDrag event handler.
    private void treeView1_DragEnter(Object
 sender, DragEventArgs e)
    {
        e.set_Effect(e.get_AllowedEffect());
    } //treeView1_DragEnter

    // Select the node under the mouse pointer to indicate the 
    // expected drop location.
    private void treeView1_DragOver(Object
 sender, DragEventArgs e)
    {
        // Retrieve the client coordinates of the mouse position.
        Point targetPoint =
            treeView1.PointToClient(new Point(e.get_X(), e.get_Y()));
        // Select the node at the mouse position.
        treeView1.set_SelectedNode(treeView1.GetNodeAt(targetPoint));
    } //treeView1_DragOver

    private void treeView1_DragDrop(Object
 sender, DragEventArgs e)
    {
        // Retrieve the client coordinates of the drop location.
        Point targetPoint =
            treeView1.PointToClient(new Point(e.get_X(), e.get_Y()));
        // Retrieve the node at the drop location.
        TreeNode targetNode = treeView1.GetNodeAt(targetPoint);
        // Retrieve the node that was dragged.
        TreeNode draggedNode =
            (TreeNode)e.get_Data().GetData(TreeNode.class.ToType());
        // Confirm that the node at the drop location is not 
        // the dragged node or a descendant of the dragged node.
        if (!(draggedNode.Equals(targetNode))
            && !(ContainsNode(draggedNode, targetNode))) {
            // If it is a move operation, remove the node from its current
 
            // location and add it to the node at the drop location.
            if (e.get_Effect().Equals(DragDropEffects.Move)) {
                draggedNode.Remove();
                targetNode.get_Nodes().Add(draggedNode);
            }
            // If it is a copy operation, clone the dragged node 
            // and add it to the node at the drop location.
            else {
                if (e.get_Effect().Equals(DragDropEffects.Copy))
 {
                    targetNode.get_Nodes().Add((TreeNode)draggedNode.Clone());
                }
            }
            // Expand the node at the location 
            // to show the dropped node.
            targetNode.Expand();
        }
    } //treeView1_DragDrop

    // Determine whether one node is a parent 
    // or ancestor of a second node.
    private boolean ContainsNode(TreeNode node1, TreeNode node2)
    {
        // Check the parent node of the second node.
        if (node2.get_Parent() == null) {
            return false;
        }
        if (node2.get_Parent().Equals(node1)) {
            return true;
        }
        // If the parent node is not null or equal to the first node,
 
        // call the ContainsNode method recursively using the parent
 of 
        // the second node.
        return ContainsNode(node1, node2.get_Parent());
    } //ContainsNode
} //Form1 
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「ItemDragEventHandler デリゲート」の関連用語

ItemDragEventHandler デリゲートのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ItemDragEventHandler デリゲートのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2024 Microsoft.All rights reserved.

©2024 GRAS Group, Inc.RSS