using
System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; namespace WindowsApplication2 { public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.ListBox listBox1; int indexofsource;//拖动的起始索引 int indexoftarget; //拖动的结束索引 private System.ComponentModel.Container components = null; public Form1() { InitializeComponent(); } protected override void Dispose(bool disposing) { if (disposing) { if (components != null) { components.Dispose(); } } base.Dispose(disposing); } #region Windows 窗体设计器生成的代码 private void InitializeComponent() { this.listBox1 = new System.Windows.Forms.ListBox(); this.SuspendLayout(); // // listBox1 // this.listBox1.AllowDrop = true;//这个属性一定要设置为true; this.listBox1.ItemHeight = 12; this.listBox1.Items.AddRange(new object[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"}); this.listBox1.Location = new System.Drawing.Point(16, 8); this.listBox1.Name = "listBox1"; this.listBox1.ScrollAlwaysVisible = true; this.listBox1.Size = new System.Drawing.Size(264, 136); this.listBox1.TabIndex = 0; this.listBox1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.listBox1_MouseDown); this.listBox1.DragOver += new System.Windows.Forms.DragEventHandler(this.listBox1_DragOver); this.listBox1.DragDrop += new System.Windows.Forms.DragEventHandler(this.listBox1_DragDrop); this.AutoScaleBaseSize = new System.Drawing.Size(6, 14); this.ClientSize = new System.Drawing.Size(292, 273); this.Controls.Add(this.listBox1); this.Name = "Form1"; this.Text = "Form1"; this.ResumeLayout(false); } #endregion |
[STAThread]
static void Main() { Application.Run(new Form1()); } private void listBox1_MouseDown( object sender, System.Windows.Forms.MouseEventArgs e) { indexofsource = ((ListBox)sender).IndexFromPoint(e.X, e.Y); if (indexofsource != ListBox.NoMatches) { ((ListBox)sender).DoDragDrop(((ListBox)sender).Items[indexofsource].ToString(), DragDropEffects.All); } } private void listBox1_DragOver( object sender, System.Windows.Forms.DragEventArgs e) { //拖动源和放置的目的地一定是一个ListBox if (e.Data.GetDataPresent(typeof(System.String)) && ((ListBox)sender).Equals(listBox1)) { e.Effect = DragDropEffects.Move; } else e.Effect = DragDropEffects.None; } private void listBox1_DragDrop( object sender, System.Windows.Forms.DragEventArgs e) { ListBox listbox = (ListBox)sender; indexoftarget = listbox.IndexFromPoint(listbox.PointToClient(new Point(e.X, e.Y))); if (indexoftarget != ListBox.NoMatches) { string temp = listbox.Items[indexoftarget].ToString(); listbox.Items[indexoftarget] = listbox.Items[indexofsource]; listbox.Items[indexofsource] = temp; listbox.SelectedIndex = indexoftarget; } } } } |