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

原创 2007年10月11日 10:23:00

 定义多个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) //向上移动
        ...{
            
//by 闫磊 Email:Landgis@126.com,yanleigis@21cn.com 2007.10.11
            
//若不是第一行则上移
            if (ListBox1.SelectedIndex > 0)
            
...{

                
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;


            }

        }

        
private void moveDownListBox(ListBox ListBox1)  /**//**//**/////向下移动
        ...{
            
//若不是第最后一行则下移
            if (ListBox1.SelectedIndex < ListBox1.Items.Count - 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



            }

        }

        
private void button1_Click(object sender, EventArgs e) //调用向上移动
        ...{
            moveUpListBox(ListBox1);

        }


        
private void button2_Click(object sender, EventArgs e) //调用向下移动
        ...{
            moveUpListBox(ListBox1);
        }

       
//下面是拖动
      
//by 闫磊 Email:Landgis@126.com,yanleigis@21cn.com 2007.10.11

        
private ListBox sourcelbl;//拖动源


        
private void ListBox1_DragOver(object sender, DragEventArgs e)
        
...{

            
//拖动源和放置的目的地一定是一个ListBox
            if (e.Data.GetDataPresent(typeof(System.String)))
            
...{
                e.Effect 
= DragDropEffects.Move;
            }

            
else
                e.Effect 
= DragDropEffects.None;

        }


        
private void ListBox1_DragDrop(object sender, DragEventArgs e)
        
...{


            ListBox listbox 
= (ListBox)sender;
            
int indexoftarget = listbox.IndexFromPoint(listbox.PointToClient(new Point(e.X, e.Y)));

            
//拖动源和放置的目的地可能不一样
            int idx = -1;
            
for (int i = sourcelbl.SelectedItems.Count - 1; i == 0; i--)
            
...{
                
if (!listbox.Equals(sourcelbl) && indexoftarget == -1)
                
...{
                    idx 
= listbox.Items.Add(sourcelbl.SelectedItems[i].ToString());

                }

                
else
                
...{
                    listbox.Items.Insert(indexoftarget, sourcelbl.SelectedItems[i].ToString());


                }


            }

            sourcelbl.Items.RemoveAt(sourcelbl.SelectedIndex);

            
if (idx > -1)
            
...{
                listbox.SelectedIndex 
= idx;
            }

            
else
                listbox.SelectedIndex 
= indexoftarget;

        }



        
private void ListBox1_MouseDown(object sender, MouseEventArgs e)
        
...{
            sourcelbl 
= (ListBox)sender;
            
int indexofsource = sourcelbl.SelectedIndex;
            
if (indexofsource > -1)
            
...{
                sourcelbl.DoDragDrop(sourcelbl.Items[indexofsource].ToString(), DragDropEffects.All);

            }


        }

 

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

Delphi编程实用小技巧(三)——经典listbox的拖拽

首先将listbox的属性: DrogMod  设置为dmAutomatic Multiselect 设置为 true 代码: procedure TForm1.ListBox1DragDro...
  • wozengcong
  • wozengcong
  • 2016年03月11日 22:26
  • 1051

用C#实现在ListBox中拖动排序

用C#实现在ListBox中拖动排序现在在C#中处理有关的拖放操作变得比以前方便多了,现在就已一个例子说明,这个例子演示了通过鼠标的拖动在一个ListBox中进行排序操作。相关源码如下:using S...
  • J_S_S
  • J_S_S
  • 2007年06月02日 08:37
  • 4329

winform的ListBox拖拽排序实例

  • 2015年09月09日 17:20
  • 57KB
  • 下载

C#ListBox用法

ListBox控件显示较长的选项列表,用户可从中选择一项或多项。如果项总数超出可以显示的项数,则自动向ListBox控件添加滚动条。ListBox控件列表中的每个元素称为项。图1所示为ListBox控...
  • laoniu541292552
  • laoniu541292552
  • 2012年09月20日 15:42
  • 20067

listbox控件用法详解

1. 属性列表:     SelectionMode    组件中条目的选择类型,即多选(Multiple)、单选(Single)     Rows             列表框中显示总共多少行 ...
  • SMF0504
  • SMF0504
  • 2016年06月27日 12:33
  • 16716

C# checklistbox控件用法总结(怎样得到多选的值,以及动态加载数据)

一般认为:foreach (object obj in checkedListBox1.SelectedItems)即可遍历选中的值。 其实这里遍历的只是高亮的值并不是打勾的值。遍历打勾的值要用下面...
  • source0573
  • source0573
  • 2016年05月08日 13:44
  • 3757

C# 对listBox中的Items排序

一、添加时自动排序 设置listBox.Sorted = true就可以实现在添加项的时候自动排序 二、修改后排序 可是要实现修改后也排序,上面的方法就不行了 用下面的办法实现 ...
  • lovenessless
  • lovenessless
  • 2012年12月21日 15:32
  • 3319

C#Winform 实现ListBox中项的拖拽

private void lstRead_MouseDown(object sender, MouseEventArgs e) { if (this.lstRe...
  • pp_fzp
  • pp_fzp
  • 2016年11月24日 14:02
  • 1446

wpf ListBox拖动排序实现

XAML:
  • leolinsheng
  • leolinsheng
  • 2016年04月09日 20:45
  • 1574

C# 同步两个ListBox滚动条

有时需要对2个listbox的选项一一对比,两边来回容易搞乱搞错,所以google了一下,找到了2个listbox同步的方法。 同时也亲自试验了一下,贴上来 1 、方法一 Winform界面里放入...
  • u011981242
  • u011981242
  • 2016年07月13日 11:52
  • 1197
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:.net C# listbox的上下移动,拖动排序,两个listbox相互拖动
举报原因:
原因补充:

(最多只允许输入30个字)