.net C# listbox的上下移动,拖动排序,两个listbox相互拖动

时间:2021-12-13 15:50:28

 定义多个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);

 

.net C# listbox的上下移动,拖动排序,两个listbox相互拖动  private void moveUpListBox(ListBox ListBox1) //向上移动
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
        {
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动            
//by 闫磊 Email:Landgis@126.com,yanleigis@21cn.com 2007.10.11
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动            
//若不是第一行则上移
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
            if (ListBox1.SelectedIndex > 0)
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动.net C# listbox的上下移动,拖动排序,两个listbox相互拖动            
{
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动                
int index = ListBox1.SelectedIndex;
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动                
string temp = ListBox1.Items[index - 1].ToString();
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动                ListBox1.Items[index 
- 1= ListBox1.SelectedItem.ToString(); ;
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动                ListBox1.Items[index] 
= temp;
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动                ListBox1.SelectedIndex 
= index - 1;
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动            }

.net C# listbox的上下移动,拖动排序,两个listbox相互拖动        }

.net C# listbox的上下移动,拖动排序,两个listbox相互拖动.net C# listbox的上下移动,拖动排序,两个listbox相互拖动        
private void moveDownListBox(ListBox ListBox1)  /**/////向下移动
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动.net C# listbox的上下移动,拖动排序,两个listbox相互拖动        {
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动            
//若不是第最后一行则下移
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
            if (ListBox1.SelectedIndex < ListBox1.Items.Count - 1)
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动.net C# listbox的上下移动,拖动排序,两个listbox相互拖动            
{
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动                
int index = ListBox1.SelectedIndex;
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动                
string temp = ListBox1.Items[index + 1].ToString();
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动                ListBox1.Items[index 
+ 1= ListBox1.SelectedItem.ToString(); ;
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动                ListBox1.Items[index] 
= temp;
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动                ListBox1.SelectedIndex 
= index + 1;
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动                
//ListBox1.val
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动

.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动            }

.net C# listbox的上下移动,拖动排序,两个listbox相互拖动        }

.net C# listbox的上下移动,拖动排序,两个listbox相互拖动        
private void button1_Click(object sender, EventArgs e) //调用向上移动
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
        {
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动            moveUpListBox(ListBox1);
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动        }

.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动        
private void button2_Click(object sender, EventArgs e) //调用向下移动
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
        {
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动            moveUpListBox(ListBox1);
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动        }

.net C# listbox的上下移动,拖动排序,两个listbox相互拖动       
//下面是拖动
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动      
//by 闫磊 Email:Landgis@126.com,yanleigis@21cn.com 2007.10.11
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动

.net C# listbox的上下移动,拖动排序,两个listbox相互拖动        
private ListBox sourcelbl;//拖动源
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动

.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动        
private void ListBox1_DragOver(object sender, DragEventArgs e)
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动.net C# listbox的上下移动,拖动排序,两个listbox相互拖动        
{
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动            
//拖动源和放置的目的地一定是一个ListBox
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
            if (e.Data.GetDataPresent(typeof(System.String)))
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动.net C# listbox的上下移动,拖动排序,两个listbox相互拖动            
{
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动                e.Effect 
= DragDropEffects.Move;
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动            }

.net C# listbox的上下移动,拖动排序,两个listbox相互拖动            
else
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动                e.Effect 
= DragDropEffects.None;
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动        }

.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动        
private void ListBox1_DragDrop(object sender, DragEventArgs e)
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动.net C# listbox的上下移动,拖动排序,两个listbox相互拖动        
{
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动            ListBox listbox 
= (ListBox)sender;
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动            
int indexoftarget = listbox.IndexFromPoint(listbox.PointToClient(new Point(e.X, e.Y)));
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动            
//拖动源和放置的目的地可能不一样
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
            int idx = -1;
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动            
for (int i = sourcelbl.SelectedItems.Count - 1; i == 0; i--)
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动.net C# listbox的上下移动,拖动排序,两个listbox相互拖动            
{
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动                
if (!listbox.Equals(sourcelbl) && indexoftarget == -1)
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动.net C# listbox的上下移动,拖动排序,两个listbox相互拖动                
{
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动                    idx 
= listbox.Items.Add(sourcelbl.SelectedItems[i].ToString());
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动                }

.net C# listbox的上下移动,拖动排序,两个listbox相互拖动                
else
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动.net C# listbox的上下移动,拖动排序,两个listbox相互拖动                
{
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动                    listbox.Items.Insert(indexoftarget, sourcelbl.SelectedItems[i].ToString());
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动                }

.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动            }

.net C# listbox的上下移动,拖动排序,两个listbox相互拖动            sourcelbl.Items.RemoveAt(sourcelbl.SelectedIndex);
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动            
if (idx > -1)
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动.net C# listbox的上下移动,拖动排序,两个listbox相互拖动            
{
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动                listbox.SelectedIndex 
= idx;
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动            }

.net C# listbox的上下移动,拖动排序,两个listbox相互拖动            
else
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动                listbox.SelectedIndex 
= indexoftarget;
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动        }

.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动        
private void ListBox1_MouseDown(object sender, MouseEventArgs e)
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动.net C# listbox的上下移动,拖动排序,两个listbox相互拖动        
{
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动            sourcelbl 
= (ListBox)sender;
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动            
int indexofsource = sourcelbl.SelectedIndex;
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动            
if (indexofsource > -1)
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动.net C# listbox的上下移动,拖动排序,两个listbox相互拖动            
{
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动                sourcelbl.DoDragDrop(sourcelbl.Items[indexofsource].ToString(), DragDropEffects.All);
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动            }

.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
.net C# listbox的上下移动,拖动排序,两个listbox相互拖动        }

.net C# listbox的上下移动,拖动排序,两个listbox相互拖动

 

//本文参考:http://blog.csdn.net/J_S_S/archive/2007/06/02/1635012.aspx,对本文的作者表示由衷感谢