定义多个Listbox,可以实现相互拖动,如listbox1,listbox2,设置如下allowdrop=true和
this.listBox2.DragDrop += new System.Windows.Forms.DragEventHandler(this.ListBox1_DragDrop);
this.listBox2.MouseDown += new System.Windows.Forms.MouseEventHandler(this.ListBox1_MouseDown);
this.listBox2.DragOver += new System.Windows.Forms.DragEventHandler(this.ListBox1_DragOver);
private void moveUpListBox(ListBox ListBox1) //向上移动
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzEvMy8zLzIvMzAvYTQxOTU0YTI3ZDZhZDk2ZmEyYzJjZjgxNmU2Nzc0NDguanBl.jpe?w=700&webp=1)
...{
//by 闫磊 Email:Landgis@126.com,yanleigis@21cn.com 2007.10.11
//若不是第一行则上移
if (ListBox1.SelectedIndex > 0)
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzkvMi81LzUvMTgvMzdjOGJmNjhjZGMzY2M4MTc1OWMzNDE2MDc3NmJjNTMuanBl.jpe?w=700&webp=1)
...{
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzAvOC8yLzUvNTMvNmE5YzA3MWEwOGYxZGFlMmQzZTFjNTEyMDAwZWVmNDEuanBl.jpe?w=700&webp=1)
int index = ListBox1.SelectedIndex;
string temp = ListBox1.Items[index - 1].ToString();
ListBox1.Items[index - 1] = ListBox1.SelectedItem.ToString(); ;
ListBox1.Items[index] = temp;
ListBox1.SelectedIndex = index - 1;
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzAvOC8yLzUvNTMvNmE5YzA3MWEwOGYxZGFlMmQzZTFjNTEyMDAwZWVmNDEuanBl.jpe?w=700&webp=1)
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzAvOC8yLzUvNTMvNmE5YzA3MWEwOGYxZGFlMmQzZTFjNTEyMDAwZWVmNDEuanBl.jpe?w=700&webp=1)
}
}
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzEvMy8zLzIvMzAvYTQxOTU0YTI3ZDZhZDk2ZmEyYzJjZjgxNmU2Nzc0NDguanBl.jpe?w=700&webp=1)
private void moveDownListBox(ListBox ListBox1) /**//**//**/////向下移动
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzEvMy8zLzIvMzAvYTQxOTU0YTI3ZDZhZDk2ZmEyYzJjZjgxNmU2Nzc0NDguanBl.jpe?w=700&webp=1)
...{
//若不是第最后一行则下移
if (ListBox1.SelectedIndex < ListBox1.Items.Count - 1)
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzkvMi81LzUvMTgvMzdjOGJmNjhjZGMzY2M4MTc1OWMzNDE2MDc3NmJjNTMuanBl.jpe?w=700&webp=1)
...{
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzAvOC8yLzUvNTMvNmE5YzA3MWEwOGYxZGFlMmQzZTFjNTEyMDAwZWVmNDEuanBl.jpe?w=700&webp=1)
int index = ListBox1.SelectedIndex;
string temp = ListBox1.Items[index + 1].ToString();
ListBox1.Items[index + 1] = ListBox1.SelectedItem.ToString(); ;
ListBox1.Items[index] = temp;
ListBox1.SelectedIndex = index + 1;
//ListBox1.val
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzAvOC8yLzUvNTMvNmE5YzA3MWEwOGYxZGFlMmQzZTFjNTEyMDAwZWVmNDEuanBl.jpe?w=700&webp=1)
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzAvOC8yLzUvNTMvNmE5YzA3MWEwOGYxZGFlMmQzZTFjNTEyMDAwZWVmNDEuanBl.jpe?w=700&webp=1)
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzAvOC8yLzUvNTMvNmE5YzA3MWEwOGYxZGFlMmQzZTFjNTEyMDAwZWVmNDEuanBl.jpe?w=700&webp=1)
}
}
private void button1_Click(object sender, EventArgs e) //调用向上移动
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzEvMy8zLzIvMzAvYTQxOTU0YTI3ZDZhZDk2ZmEyYzJjZjgxNmU2Nzc0NDguanBl.jpe?w=700&webp=1)
...{
moveUpListBox(ListBox1);
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzAvOC8yLzUvNTMvNmE5YzA3MWEwOGYxZGFlMmQzZTFjNTEyMDAwZWVmNDEuanBl.jpe?w=700&webp=1)
}
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzUvMS8wLzIvMTYvNjgxMDM1NWMyZjc4YzEyZTkxYjc5OTdhOGU4YzU4M2EuanBl.jpe?w=700&webp=1)
private void button2_Click(object sender, EventArgs e) //调用向下移动
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzEvMy8zLzIvMzAvYTQxOTU0YTI3ZDZhZDk2ZmEyYzJjZjgxNmU2Nzc0NDguanBl.jpe?w=700&webp=1)
...{
moveUpListBox(ListBox1);
}
//下面是拖动
//by 闫磊 Email:Landgis@126.com,yanleigis@21cn.com 2007.10.11
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzUvMS8wLzIvMTYvNjgxMDM1NWMyZjc4YzEyZTkxYjc5OTdhOGU4YzU4M2EuanBl.jpe?w=700&webp=1)
private ListBox sourcelbl;//拖动源
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzUvMS8wLzIvMTYvNjgxMDM1NWMyZjc4YzEyZTkxYjc5OTdhOGU4YzU4M2EuanBl.jpe?w=700&webp=1)
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzUvMS8wLzIvMTYvNjgxMDM1NWMyZjc4YzEyZTkxYjc5OTdhOGU4YzU4M2EuanBl.jpe?w=700&webp=1)
private void ListBox1_DragOver(object sender, DragEventArgs e)
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzEvMy8zLzIvMzAvYTQxOTU0YTI3ZDZhZDk2ZmEyYzJjZjgxNmU2Nzc0NDguanBl.jpe?w=700&webp=1)
...{
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzAvOC8yLzUvNTMvNmE5YzA3MWEwOGYxZGFlMmQzZTFjNTEyMDAwZWVmNDEuanBl.jpe?w=700&webp=1)
//拖动源和放置的目的地一定是一个ListBox
if (e.Data.GetDataPresent(typeof(System.String)))
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzkvMi81LzUvMTgvMzdjOGJmNjhjZGMzY2M4MTc1OWMzNDE2MDc3NmJjNTMuanBl.jpe?w=700&webp=1)
...{
e.Effect = DragDropEffects.Move;
}
else
e.Effect = DragDropEffects.None;
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzAvOC8yLzUvNTMvNmE5YzA3MWEwOGYxZGFlMmQzZTFjNTEyMDAwZWVmNDEuanBl.jpe?w=700&webp=1)
}
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzUvMS8wLzIvMTYvNjgxMDM1NWMyZjc4YzEyZTkxYjc5OTdhOGU4YzU4M2EuanBl.jpe?w=700&webp=1)
private void ListBox1_DragDrop(object sender, DragEventArgs e)
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzEvMy8zLzIvMzAvYTQxOTU0YTI3ZDZhZDk2ZmEyYzJjZjgxNmU2Nzc0NDguanBl.jpe?w=700&webp=1)
...{
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzAvOC8yLzUvNTMvNmE5YzA3MWEwOGYxZGFlMmQzZTFjNTEyMDAwZWVmNDEuanBl.jpe?w=700&webp=1)
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzAvOC8yLzUvNTMvNmE5YzA3MWEwOGYxZGFlMmQzZTFjNTEyMDAwZWVmNDEuanBl.jpe?w=700&webp=1)
ListBox listbox = (ListBox)sender;
int indexoftarget = listbox.IndexFromPoint(listbox.PointToClient(new Point(e.X, e.Y)));
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzAvOC8yLzUvNTMvNmE5YzA3MWEwOGYxZGFlMmQzZTFjNTEyMDAwZWVmNDEuanBl.jpe?w=700&webp=1)
//拖动源和放置的目的地可能不一样
int idx = -1;
for (int i = sourcelbl.SelectedItems.Count - 1; i == 0; i--)
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzkvMi81LzUvMTgvMzdjOGJmNjhjZGMzY2M4MTc1OWMzNDE2MDc3NmJjNTMuanBl.jpe?w=700&webp=1)
...{
if (!listbox.Equals(sourcelbl) && indexoftarget == -1)
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzkvMi81LzUvMTgvMzdjOGJmNjhjZGMzY2M4MTc1OWMzNDE2MDc3NmJjNTMuanBl.jpe?w=700&webp=1)
...{
idx = listbox.Items.Add(sourcelbl.SelectedItems[i].ToString());
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzAvOC8yLzUvNTMvNmE5YzA3MWEwOGYxZGFlMmQzZTFjNTEyMDAwZWVmNDEuanBl.jpe?w=700&webp=1)
}
else
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzkvMi81LzUvMTgvMzdjOGJmNjhjZGMzY2M4MTc1OWMzNDE2MDc3NmJjNTMuanBl.jpe?w=700&webp=1)
...{
listbox.Items.Insert(indexoftarget, sourcelbl.SelectedItems[i].ToString());
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzAvOC8yLzUvNTMvNmE5YzA3MWEwOGYxZGFlMmQzZTFjNTEyMDAwZWVmNDEuanBl.jpe?w=700&webp=1)
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzAvOC8yLzUvNTMvNmE5YzA3MWEwOGYxZGFlMmQzZTFjNTEyMDAwZWVmNDEuanBl.jpe?w=700&webp=1)
}
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzAvOC8yLzUvNTMvNmE5YzA3MWEwOGYxZGFlMmQzZTFjNTEyMDAwZWVmNDEuanBl.jpe?w=700&webp=1)
}
sourcelbl.Items.RemoveAt(sourcelbl.SelectedIndex);
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzAvOC8yLzUvNTMvNmE5YzA3MWEwOGYxZGFlMmQzZTFjNTEyMDAwZWVmNDEuanBl.jpe?w=700&webp=1)
if (idx > -1)
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzkvMi81LzUvMTgvMzdjOGJmNjhjZGMzY2M4MTc1OWMzNDE2MDc3NmJjNTMuanBl.jpe?w=700&webp=1)
...{
listbox.SelectedIndex = idx;
}
else
listbox.SelectedIndex = indexoftarget;
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzAvOC8yLzUvNTMvNmE5YzA3MWEwOGYxZGFlMmQzZTFjNTEyMDAwZWVmNDEuanBl.jpe?w=700&webp=1)
}
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzUvMS8wLzIvMTYvNjgxMDM1NWMyZjc4YzEyZTkxYjc5OTdhOGU4YzU4M2EuanBl.jpe?w=700&webp=1)
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzUvMS8wLzIvMTYvNjgxMDM1NWMyZjc4YzEyZTkxYjc5OTdhOGU4YzU4M2EuanBl.jpe?w=700&webp=1)
private void ListBox1_MouseDown(object sender, MouseEventArgs e)
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzEvMy8zLzIvMzAvYTQxOTU0YTI3ZDZhZDk2ZmEyYzJjZjgxNmU2Nzc0NDguanBl.jpe?w=700&webp=1)
...{
sourcelbl = (ListBox)sender;
int indexofsource = sourcelbl.SelectedIndex;
if (indexofsource > -1)
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzkvMi81LzUvMTgvMzdjOGJmNjhjZGMzY2M4MTc1OWMzNDE2MDc3NmJjNTMuanBl.jpe?w=700&webp=1)
...{
sourcelbl.DoDragDrop(sourcelbl.Items[indexofsource].ToString(), DragDropEffects.All);
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzAvOC8yLzUvNTMvNmE5YzA3MWEwOGYxZGFlMmQzZTFjNTEyMDAwZWVmNDEuanBl.jpe?w=700&webp=1)
}
![.net C# listbox的上下移动,拖动排序,两个listbox相互拖动 .net C# listbox的上下移动,拖动排序,两个listbox相互拖动](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzAvOC8yLzUvNTMvNmE5YzA3MWEwOGYxZGFlMmQzZTFjNTEyMDAwZWVmNDEuanBl.jpe?w=700&webp=1)
}
//本文参考:http://blog.csdn.net/J_S_S/archive/2007/06/02/1635012.aspx,对本文的作者表示由衷感谢