C# 拖放;下拉列表框
我想将一个列表框项目拖动到另一个列表框我想剪切项目,而不是复制。 但是如果我将项拖动到同一个列表框中,则该项会在该列表框中复制自身 我怎样才能预防它C# 拖放;下拉列表框,c#,drag-and-drop,listbox,C#,Drag And Drop,Listbox,我想将一个列表框项目拖动到另一个列表框我想剪切项目,而不是复制。 但是如果我将项拖动到同一个列表框中,则该项会在该列表框中复制自身 我怎样才能预防它 namespace dragdrop { public partial class Form1 : Form { public Form1() { InitializeComponent(); this.listBox1.DragEnter += ne
namespace dragdrop
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.listBox1.DragEnter += new System.Windows.Forms.DragEventHandler(this.listBox1_DragEnter);
this.listBox2.DragOver += new System.Windows.Forms.DragEventHandler(this.listBox2_DragOver);
this.listBox1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.listBox1_MouseDown);
this.listBox2.MouseDown += new System.Windows.Forms.MouseEventHandler(this.listBox2_MouseDown);
this.listBox2.DragDrop += new System.Windows.Forms.DragEventHandler(this.listBox2_DragDrop);
this.listBox1.DragDrop += new System.Windows.Forms.DragEventHandler(this.listBox1_DragDrop);
}
private void listBox1_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
private void listBox2_DragOver(object sender, DragEventArgs e)
{
if (e.KeyState == 1)
{
e.Effect = DragDropEffects.Move;
}
}
private void listBox1_MouseDown(object sender, MouseEventArgs e)
{
Point sonnokta = new Point(e.X, e.Y);
int item_index = listBox1.IndexFromPoint(sonnokta);
if (e.Button == MouseButtons.Left)
{
listBox1.DoDragDrop(listBox1.Items[item_index], DragDropEffects.Move);
}
}
private void listBox2_MouseDown(object sender, MouseEventArgs e)
{
Point sonnokta = new Point(e.X, e.Y);
int item_index = listBox2.IndexFromPoint(sonnokta);
if (e.Button == MouseButtons.Left)
{
listBox2.DoDragDrop(listBox2.Items[item_index], DragDropEffects.Move);
}
}
private void listBox2_DragDrop(object sender, DragEventArgs e)
{
listBox2.Items.Add(e.Data.GetData(DataFormats.Text));
listBox1.Items.Remove(e.Data.GetData(DataFormats.Text));
}
private void listBox1_DragDrop(object sender, DragEventArgs e)
{
listBox1.Items.Add(e.Data.GetData(DataFormats.Text));
listBox2.Items.Remove(e.Data.GetData(DataFormats.Text));
}
}
}
只需检查当前列表框中是否已存在该项:
private void listBox2_DragDrop(object sender, DragEventArgs e) {
string dragItem = e.Data.GetData(DataFormats.Text) as string;
if (dragItem != null && !listBox2.Items.Contains(dragItem)) {
listBox2.Items.Add(dragItem);
listBox1.Items.Remove(dragItem);
}
}
private void listBox1_DragDrop(object sender, DragEventArgs e) {
string dragItem = e.Data.GetData(DataFormats.Text) as string;
if (dragItem != null && !listBox1.Items.Contains(dragItem)) {
listBox1.Items.Add(dragItem);
listBox2.Items.Remove(dragItem);
}
}