以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Dot NET,C#,ASP,VB 』  (http://bbs.xml.org.cn/list.asp?boardid=43)
----  C#ListView拖动透明图标跟随鼠标效果  (http://bbs.xml.org.cn/dispbbs.asp?boardid=43&rootid=&id=76147)


--  作者:卷积内核
--  发布时间:7/24/2009 2:44:00 PM

--  C#ListView拖动透明图标跟随鼠标效果
using   System;  
  using   System.Drawing;  
  using   System.Collections;  
  using   System.ComponentModel;  
  using   System.Windows.Forms;  
  using   System.Data;  
   
  namespace   ODLV  
  {  
  ///   <summary>  
  ///   Summary   description   for   Form1.  
  ///   </summary>  
  public   class   Form1   :   System.Windows.Forms.Form  
  {  
  private   System.Windows.Forms.ListView   listView1;  
  private   System.Windows.Forms.Splitter   splitter1;  
  private   System.Windows.Forms.ListView   listView2;  
  private   System.Windows.Forms.ColumnHeader   columnHeader1;  
  private   System.Windows.Forms.ColumnHeader   columnHeader2;  
  ///   <summary>  
  ///   Required   designer   variable.  
  ///   </summary>  
  private   System.ComponentModel.Container   components   =   null;  
  bool   lv1_mdown   =   false   ;  
  private   System.Windows.Forms.ColumnHeader   columnHeader3;  
  private   System.Windows.Forms.ColumnHeader   columnHeader5;  
  bool   lv2_mdown   =   false;  
   
  public   Form1()  
  {  
  //  
  //   Required   for   Windows   Form   Designer   support  
  //  
  InitializeComponent();  
   
  //  
  //   TODO:   Add   any   constructor   code   after   InitializeComponent   call  
  //  
  }  
   
  ///   <summary>  
  ///   Clean   up   any   resources   being   used.  
  ///   </summary>  
  protected   override   void   Dispose(   bool   disposing   )  
  {  
  if(   disposing   )  
  {  
  if   (components   !=   null)    
  {  
  components.Dispose();  
  }  
  }  
  base.Dispose(   disposing   );  
  }  
   
  #region   Windows   Form   Designer   generated   code  
  ///   <summary>  
  ///   Required   method   for   Designer   support   -   do   not   modify  
  ///   the   contents   of   this   method   with   the   code   editor.  
  ///   </summary>  
  private   void   InitializeComponent()  
  {  
  this.listView1   =   new   System.Windows.Forms.ListView();  
  this.columnHeader1   =   new   System.Windows.Forms.ColumnHeader();  
  this.columnHeader3   =   new   System.Windows.Forms.ColumnHeader();  
  this.splitter1   =   new   System.Windows.Forms.Splitter();  
  this.listView2   =   new   System.Windows.Forms.ListView();  
  this.columnHeader2   =   new   System.Windows.Forms.ColumnHeader();  
  this.columnHeader5   =   new   System.Windows.Forms.ColumnHeader();  
  this.SuspendLayout();  
  //    
  //   listView1  
  //    
  this.listView1.AllowDrop   =   true;  
  this.listView1.Columns.AddRange(new   System.Windows.Forms.ColumnHeader[]   {  
  this.columnHeader1,  
  this.columnHeader3});  
  this.listView1.Dock   =   System.Windows.Forms.DockStyle.Top;  
  this.listView1.FullRowSelect   =   true;  
  this.listView1.MultiSelect   =   false;  
  this.listView1.Name   =   "listView1";  
  this.listView1.Size   =   new   System.Drawing.Size(232,   176);  
  this.listView1.TabIndex   =   0;  
  this.listView1.View   =   System.Windows.Forms.View.Details;  
  this.listView1.MouseDown   +=   new   System.Windows.Forms.MouseEventHandler(this.listView1_MouseDown);  
  this.listView1.DragDrop   +=   new   System.Windows.Forms.DragEventHandler(this.listView1_DragDrop);  
  this.listView1.DragEnter   +=   new   System.Windows.Forms.DragEventHandler(this.listView1_DragEnter);  
  this.listView1.MouseMove   +=   new   System.Windows.Forms.MouseEventHandler(this.listView1_MouseMove);  
  //    
  //   columnHeader1  
  //    
  this.columnHeader1.Text   =   "COL1";  
  this.columnHeader1.Width   =   100;  
  //    
  //   columnHeader3  
  //    
  this.columnHeader3.Text   =   "COL2";  
  this.columnHeader3.Width   =   100;  
  //    
  //   splitter1
//    
  this.splitter1.Dock   =   System.Windows.Forms.DockStyle.Top;  
  this.splitter1.Location   =   new   System.Drawing.Point(0,   176);  
  this.splitter1.Name   =   "splitter1";  
  this.splitter1.Size   =   new   System.Drawing.Size(232,   3);  
  this.splitter1.TabIndex   =   1;  
  this.splitter1.TabStop   =   false;  
  //    
  //   listView2  
  //    
  this.listView2.AllowDrop   =   true;  
  this.listView2.Columns.AddRange(new   System.Windows.Forms.ColumnHeader[]   {  
  this.columnHeader2,  
  this.columnHeader5});  
  this.listView2.Cursor   =   System.Windows.Forms.Cursors.Arrow;  
  this.listView2.Dock   =   System.Windows.Forms.DockStyle.Fill;  
  this.listView2.FullRowSelect   =   true;  
  this.listView2.Location   =   new   System.Drawing.Point(0,   179);  
  this.listView2.MultiSelect   =   false;  
  this.listView2.Name   =   "listView2";  
  this.listView2.Size   =   new   System.Drawing.Size(232,   226);  
  this.listView2.TabIndex   =   2;  
  this.listView2.View   =   System.Windows.Forms.View.Details;  
  this.listView2.MouseDown   +=   new   System.Windows.Forms.MouseEventHandler(this.listView2_MouseDown);  
  this.listView2.DragDrop   +=   new   System.Windows.Forms.DragEventHandler(this.listView2_DragDrop);  
  this.listView2.DragEnter   +=   new   System.Windows.Forms.DragEventHandler(this.listView2_DragEnter);  
  this.listView2.MouseMove   +=   new   System.Windows.Forms.MouseEventHandler(this.listView2_MouseMove);  
  //    
  //   columnHeader2  
  //    
  this.columnHeader2.Text   =   "COL1";  
  this.columnHeader2.Width   =   100;  
  //    
  //   columnHeader5  
  //    
  this.columnHeader5.Text   =   "COL2";  
  this.columnHeader5.Width   =   100;  
  //    
  //   Form1  
  //    
  this.AutoScaleBaseSize   =   new   System.Drawing.Size(5,   13);  
  this.ClientSize   =   new   System.Drawing.Size(232,   405);  
  this.Controls.AddRange(new   System.Windows.Forms.Control[]   {  
      this.listView2,  
      this.splitter1,  
      this.listView1});  
  this.Name   =   "Form1";  
  this.Text   =   "Form1";  
  this.Load   +=   new   System.EventHandler(this.Form1_Load);  
  this.ResumeLayout(false);  
   
  }  
  #endregion  
   
  ///   <summary>  
  ///   The   main   entry   point   for   the   application.  
  ///   </summary>  
  [STAThread]  
  static   void   Main()    
  {  
  Application.Run(new   Form1());  
  }  
   
  private   void   Form1_Load(object   sender,   System.EventArgs   e)  
  {  
  ImageList   il   =   new   ImageList();  
  il.Images.Add(new   System.Drawing.Icon("E:\\林APP\\WinFormCollection\\DragDropListView \\TICK.ico"));//D:\\smk\\odlv\\tick.ico  
  listView1.SmallImageList   =   il   ;  
   
  ImageList   i2   =   new   ImageList();  
  i2.Images.Add(new   System.Drawing.Icon("E:\\林APP\\WinFormCollection\\DragDropListView \\KEY04.ICO"));//D:\\smk\\odlv\\key04.ico  
  listView2.SmallImageList   =   i2   ;  
   
   
  string[]   items   =   new   string[2];  
  items[0]   =   "LA"   ;   items[1]   =   "Los   Angeles";  
  listView1.Items.Add(new   ListViewItem(items,0));  
  items[0]   =   "WA"   ;   items[1]   =   "Seattle";  
  listView1.Items.Add(new   ListViewItem(items,0));  
  items[0]   =   "IL"   ;   items[1]   =   "Chicago";  
  listView1.Items.Add(new   ListViewItem(items,0));  
   
  items[0]   =   "FR"   ;   items[1]   =   "Paris";  
  listView2.Items.Add(new   ListViewItem(items,0));  
  items[0]   =   "BR"   ;   items[1]   =   "London";  
  listView2.Items.Add(new   ListViewItem(items,0));  
  items[0]   =   "IN"   ;   items[1]   =   "Mumbai";  
  listView2.Items.Add(new   ListViewItem(items,0));  
   
  }  
   
  private   void   listView1_DragDrop(object   sender,   System.Windows.Forms.DragEventArgs   e)  
  {  
  string   textBox1   =   e.Data.GetData(DataFormats.Text).ToString();  
  string[]   items   =   textBox1.Split(',');  
  listView1.Items.Add(new   ListViewItem(items,0));  
  lv1_mdown   =   false   ;  
  lv2_mdown   =   false   ;  
  }   
private   void   listView2_DragDrop(object   sender,   System.Windows.Forms.DragEventArgs   e)  
  {  
  string   textBox1   =   e.Data.GetData(DataFormats.Text).ToString();  
  string[]   items   =   textBox1.Split(',');  
  listView2.Items.Add(new   ListViewItem(items,0));  
  lv2_mdown   =   false   ;  
  lv1_mdown   =   false   ;  
  }  
   
  private   void   listView2_DragEnter(object   sender,   System.Windows.Forms.DragEventArgs   e)  
  {  
  if   (e.Data.GetDataPresent(DataFormats.Text))    
  e.Effect   =   DragDropEffects.Copy;  
  else  
  e.Effect   =   DragDropEffects.None;  
  }  
   
  private   void   listView1_DragEnter(object   sender,   System.Windows.Forms.DragEventArgs   e)  
  {  
  if   (e.Data.GetDataPresent(DataFormats.Text))    
  e.Effect   =   DragDropEffects.Copy;  
  else  
  e.Effect   =   DragDropEffects.None;  
  }  
   
  private   void   listView1_MouseMove(object   sender,   System.Windows.Forms.MouseEventArgs   e)  
  {  
  if   (   !   lv1_mdown   )   return   ;  
  if   (   e.Button   ==   MouseButtons.Right   )   return   ;  
   
  string   str   =   GetItemText(listView1)   ;  
  if   (   str   ==   ""   )   return   ;  
   
  listView1.DoDragDrop(str   ,   DragDropEffects.Copy   |   DragDropEffects.Move   )   ;  
  }  
   
  private   void   listView2_MouseMove(object   sender,   System.Windows.Forms.MouseEventArgs   e)  
  {  
  if   (   !   lv2_mdown   )   return   ;  
  if   (   e.Button   ==   MouseButtons.Right   )   return   ;  
   
  string   str   =   GetItemText(listView2)   ;  
  if   (   str   ==   ""   )   return   ;  
   
  listView2.DoDragDrop(str,   DragDropEffects.Copy   |   DragDropEffects.Move   )   ;  
  }  
   
  private   void   listView1_MouseDown(object   sender,   System.Windows.Forms.MouseEventArgs   e)  
  {  
  lv1_mdown   =   true   ;  
  }  
   
  private   void   listView2_MouseDown(object   sender,   System.Windows.Forms.MouseEventArgs   e)  
  {  
  lv2_mdown   =   true   ;  
  }  
   
  public   string   GetItemText(ListView   LVIEW)  
  {  
  int   nTotalSelected   =   LVIEW.SelectedIndices.Count;  
  if   (   nTotalSelected   <=   0   )   return   "";  
  IEnumerator   selCol   =   LVIEW.SelectedItems.GetEnumerator();  
  selCol.MoveNext()   ;  
  ListViewItem   lvi   =   (ListViewItem)selCol.Current;  
  string   mDir   =   "";  
  for   (   int   i=0;   i   <   lvi.SubItems.Count;i++)  
  mDir   +=   lvi.SubItems[i].Text   +",";  
   
  mDir   =   mDir.Substring(0,mDir.Length-1);  
  return   mDir   ;  
  }  
  }  
  }
--  作者:卷积内核
--  发布时间:8/4/2009 3:20:00 PM

--  
[C#]listview拖动事件源码

private void lvEquip_ItemDrag(object sender, System.Windows.Forms.ItemDragEventArgs e)
  {
   this.DoDragDrop(e.Item,DragDropEffects.Move);
  }
  private void tvDept_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
  {
   e.Effect=DragDropEffects.Move;
  }

  private void tvDept_DragOver(object sender, System.Windows.Forms.DragEventArgs e)
  {
   Point ptScreen=new Point(e.X,e.Y);
   Point pt=tvDept.PointToClient(ptScreen);
   ListViewItem item=tvDept.GetItemAt(pt.X,pt.Y);
   if(item!=null)
   item.Selected=true;
  }

  private void tvDept_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
  {
   Add_EquipMent();
  }


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
2,499.023ms