当前位置:编程学习 > C#/ASP.NET >>

C#控件实现内容拖动(DragDrop)功能

一、将控件内容拖到其他控件
  在开发过程中,经常会有客户要求,拖动一个控件的数据到另外一个控件中。例如将其中一个ListBox中的数据拖到另一个ListBox中。或者将DataGridView中的数据拖动到TreeView的某个节点。  
  在应用程序中,是通过处理一系列事件,如DragEnter,DragLeave和DragDrop事件来实现在Windows应用程序中的拖放操作的。通过使用这些事件参数中的可用信息,可以轻松实现拖放操作。

  拖放操作在代码中是通过三步实现的,首先是启动拖放操作,在需要拖动数据的控件上实现MouseDown事件响应代码,并调用DoDragDrop()方法;其次是实现拖放效果,在目标控件上添加DragEnter事件响应代码,使用DragDropEffects枚举类型实现移动或复制等拖动效果;最后是放置数据操作,在目标控件上添加DragDrop响应代码,把数据添加到目标控件中。
 
  1 using System;
  2 using System.Drawing;
  3 using System.Collections;
  4 using System.ComponentModel;
  5 using System.Windows.Forms;
  6 using System.Data;
  7
  8 namespace DragDrop
  9 {
 10     /// <summary>
 11     /// Form1 的摘要说明。
 12     /// </summary>
 13     public class Form1 : System.Windows.Forms.Form
 14     {
 15         private System.Windows.Forms.ListBox listBox1;
 16         private System.Windows.Forms.ListBox listBox2;
 17         /// <summary>
 18         /// 必需的设计器变量。
 19         /// </summary>
 20         private System.ComponentModel.Container components = null;
 21
 22         public Form1()
 23         {
 24             //
 25             // Windows 窗体设计器支持所必需的
 26             //
 27             InitializeComponent();
 28
 29             //
 30             // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
 31             //
 32         }
 33
 34         /// <summary>
 35         /// 清理所有正在使用的资源。
 36         /// </summary>
 37         protected override void Dispose(bool disposing)
 38         {
 39             if (disposing)
 40             {
 41                 if (components != null)
 42                 {
 43                     components.Dispose();
 44                 }
 45             }
 46             base.Dispose(disposing);
 47         }
 48
 49         #region Windows 窗体设计器生成的代码
 50         /// <summary>
 51         /// 设计器支持所需的方法 - 不要使用代码编辑器修改
 52         /// 此方法的内容。
 53         /// </summary>
 54         private void InitializeComponent()
 55         {
 56             this.listBox1 = new System.Windows.Forms.ListBox();
 57             this.listBox2 = new System.Windows.Forms.ListBox();
 58             this.SuspendLayout();
 59             //
 60             // listBox1
 61             //
 62             this.listBox1.ItemHeight = 12;
 63             this.listBox1.Location = new System.Drawing.Point(32, 24);
 64             this.listBox1.Name = "listBox1";
 65             this.listBox1.Size = new System.Drawing.Size(120, 280);
 66             this.listBox1.TabIndex = 0;
 67             this.listBox1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.listBox1_MouseDown);
 68             //
 69             // listBox2
 70             //
 71             this.listBox2.ItemHeight = 12;
 72             this.listBox2.Location = new System.Drawing.Point(248, 24);
 73             this.listBox2.Name = "listBox2";
 74             this.listBox2.Size = new System.Drawing.Size(120, 280);
 75             this.listBox2.TabIndex = 0;
 76             this.listBox2.DragDrop += new System.Windows.Forms.DragEventHandler(this.listBox2_DragDrop);
 77             this.listBox2.DragEnter += new System.Windows.Forms.DragEventHandler(this.listBox2_DragEnter);
 78             //
 79             // Form1
 80     &

补充:软件开发 , C# ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,