[转]控件拖动的样例
private void treeView1_DragEnter( object sender , DragEventArgs e )
{
if ( e.Data.GetDataPresent(typeof(TreeNode)) )
e.Effect = DragDropEffects.Move;
else
e.Effect = DragDropEffects.None;
}
private void treeView1_DragDrop( object sender , DragEventArgs e )
{
TreeNode myNode = null;
if ( e.Data.GetDataPresent(typeof(TreeNode)) )
{
myNode = (TreeNode)( e.Data.GetData(typeof(TreeNode)) );
}
Point Position = treeView1.PointToClient(new Point(e.X , e.Y));
TreeNode DropNode = treeView1.GetNodeAt(Position);
if ( DropNode != null && DropNode.Parent != myNode )
{
TreeNode DragNode = myNode;
myNode.Remove();
DropNode.Nodes.Add(DragNode);
}
}
private void treeView1_ItemDrag( object sender , ItemDragEventArgs e )
{
DoDragDrop(e.Item , DragDropEffects.Move);
}
还有:http://www.syncfusion.com/faq/windowsforms/Search/617.aspx
{
if ( e.Data.GetDataPresent(typeof(TreeNode)) )
e.Effect = DragDropEffects.Move;
else
e.Effect = DragDropEffects.None;
}
private void treeView1_DragDrop( object sender , DragEventArgs e )
{
TreeNode myNode = null;
if ( e.Data.GetDataPresent(typeof(TreeNode)) )
{
myNode = (TreeNode)( e.Data.GetData(typeof(TreeNode)) );
}
Point Position = treeView1.PointToClient(new Point(e.X , e.Y));
TreeNode DropNode = treeView1.GetNodeAt(Position);
if ( DropNode != null && DropNode.Parent != myNode )
{
TreeNode DragNode = myNode;
myNode.Remove();
DropNode.Nodes.Add(DragNode);
}
}
private void treeView1_ItemDrag( object sender , ItemDragEventArgs e )
{
DoDragDrop(e.Item , DragDropEffects.Move);
}
还有:http://www.syncfusion.com/faq/windowsforms/Search/617.aspx
HOW TO: 在 Visual C# .NET 应用程序中提供文件拖放功能
http://support.microsoft.com/default.aspx?scid=kb%3Bzh-cn%3B307966
| 文章编号 | : | 307966 |
| 最后修改 | : | 2002年2月15日 |
| 修订 | : | 1.0 |
本文的发布号曾为 CHS307966
本页
![]() |
概要 | ||||
![]() |
要求 | ||||
![]() |
生成示例的步骤 | ||||
![]() |
参考 | ||||
![]() |
这篇文章中的信息适用于: | ||||
概要
本文列出的分步过程演示了如何在 Visual C# .NET 应用程序中提供文件拖放功能。 其中使用了一个列表框控件作为文件拖放过程的目标。
本文假定您熟悉下列主题:
Data 对象的 GetData 方法返回一个字符串数组,该数组包含拖到该列表框控件中的文件的完整路径名。 您可以使用此文件路径信息来执行需要对文件执行的任何操作。 例如,可以使用 System.IO 命名空间中的类来打开并读取文件、移动文件或将文件复制到一个新位置。 在此示例中,您只是添加了拖到列表框控件中的文件的完整路径。
若要在 Visual C# .NET 应用程序中提供文件拖放功能,请按以下步骤操作:
要求
下面的列表列出了推荐使用的硬件、软件、网络结构以及所需的服务包:| • | Visual C# .NET |
| • | Windows 窗体列表框控件 |
| • | Windows 窗体事件处理 |
生成示例的步骤
列表框控件提供了您需要处理的两个拖放事件: DragEnter 和 DragDrop。 当您在控件的边界内拖动对象时,便会发生 DragEnter 事件;该事件用于确定当前拖动的对象是不是您要放到控件上的对象。 在将一个或多个文件拖到控件上时,需要处理此事件。 这使得在将对象拖到控件上方时,能够根据所拖动的对象显示相应的图标。 将拖动的对象释放到控件上时,会发生 DragDrop 事件。 通过处理此事件可以检索对象。 Data 对象用于检索数据。Data 对象的 GetData 方法返回一个字符串数组,该数组包含拖到该列表框控件中的文件的完整路径名。 您可以使用此文件路径信息来执行需要对文件执行的任何操作。 例如,可以使用 System.IO 命名空间中的类来打开并读取文件、移动文件或将文件复制到一个新位置。 在此示例中,您只是添加了拖到列表框控件中的文件的完整路径。
若要在 Visual C# .NET 应用程序中提供文件拖放功能,请按以下步骤操作:
| 1. | 在 Visual C# .NET 中新建一个 Windows 窗体应用程序。默认情况下将创建 Form1。 |
| 2. | 使用工具框向 Form1 添加一个列表框控件。 |
| 3. | 在“属性”窗口中,将该列表框控件的 AllowDrop 属性更改为 True,以允许将对象拖到控件上。 |
| 4. | 在解决方案资源管理器中,右键单击 Form1,然后单击查看代码。 |
| 5. | 若要处理 DragEnter 事件,请将下面的方法添加到 Windows 窗体设计器在 Form1 类中生成的代码段下面: |
| 6. | 若要处理 DragDrop 事件,请将下面的方法添加到 Form1 类中,紧挨在第 5 步中添加的方法后面: |
| 7. | 若要将这两个事件处理程序与控件事件相关联,请将以下代码添加到 Form1 的 InitializeComponent 方法中。 确保将此代码添加到已实例化 ListBox1 后的位置: |
| 8. | 生成并运行该项目。 |
| 9. | 将一个或多个文件从桌面或另一文件夹拖到列表框控件中。 您会注意到,文件的完整路径添加到了列表框控件中。 |
参考
有关更多信息,请参见下面的 Microsoft Developer Network (MSDN) Web 站点:
Control.DragEnter 事件
http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemWindowsFormsControlClassDragEnterTopic.asp (http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemWindowsFormsControlClassDragEnterTopic.asp)
Control.DragDrop 事件
http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemWindowsFormsControlClassDragDropTopic.asp (http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemWindowsFormsControlClassDragDropTopic.asp)
http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemWindowsFormsControlClassDragEnterTopic.asp (http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemWindowsFormsControlClassDragEnterTopic.asp)
Control.DragDrop 事件
http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemWindowsFormsControlClassDragDropTopic.asp (http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemWindowsFormsControlClassDragDropTopic.asp)



浙公网安备 33010602011771号