WinForm的Listbox控件实现拖拽数据功能

发布时间 2023-04-01 17:16:35作者: 聆听微风

WinForm的Listbox控件实现拖拽数据功能

screenshots

相关函数:

MouseDown

DragDrop

DragEnter

思路:

当左侧的空间鼠标按下(MouseDown)以后,触发DragDrop操作,然后移动到右侧控件中,将会触发右侧控件的DragEnter事件。

右侧同理

MouseDown:触发拖动操作

DragDrop:从当前容器中拖拽动作完成时的操作(发起拖拽动作的容器)

DragEnter:当从别的容器中得到新的对象时的操作(接收到拖拽动作的容器)

代码如下:

        private void listBox1_MouseDown(object sender, MouseEventArgs e)
        {
            if(listBox1.SelectedItem==null)
                return;
            listBox1.DoDragDrop(listBox1.SelectedItem, DragDropEffects.Move);
        }

        private void listBox1_DragEnter(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(typeof(string)))
            {
                e.Effect = DragDropEffects.Move;
            }
            else
                e.Effect = DragDropEffects.None;
        }

        private void listBox1_DragDrop(object sender, DragEventArgs e)
        {
            object o = listBox2.SelectedItem;
            if (o!=null)
            {
                listBox1.Items.Add(o);
                listBox2.Items.Remove(o);
            }
          
        }