0
我正在尝试将项目从列表框中拖放到文本框中。这对我来说可以。 现在,当我试图将第二个项目拖到同一个文本框中时,它将它追加到文本框中包含的最后一个文本。我想它应该粘贴在我拖动项目到文本框的位置。我用下面的代码到目前为止将文本插入到x,y坐标位置的文本框中
private void Form1_Load(object sender, System.EventArgs e) {
for (int i = 0; i < 10; i++) {
if (i % 2 == 0)
listBoxControl1.Items.Add("Item " + i.ToString());
}
private void listBoxControl1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) {
ListBoxControl c = sender as ListBoxControl;
p = new Point(e.X, e.Y);
int selectedIndex = c.IndexFromPoint(p);
if (selectedIndex == -1)
p = Point.Empty;
}
private void listBoxControl1_MouseMove(object sender,System.Windows.Forms.MouseEventArgs e) {
if (e.Button == MouseButtons.Left)
if ((p != Point.Empty) && ((Math.Abs(e.X - p.X) > 5) || (Math.Abs(e.Y - p.Y) > 5)))
listBoxControl1.DoDragDrop(sender, DragDropEffects.Move);
}
private void textEdit1_DragOver(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
private void textEdit1_DragDrop(object sender, DragEventArgs e)
{
TextEdit textBox1 = sender as TextEdit;
Point newPoint = new Point(e.X, e.Y);
newPoint = textBox1.PointToClient(newPoint);
object item = listBoxControl1.Items[listBoxControl1.IndexFromPoint(p)];
if (textBox1.Text == "")
{
textBox1.Text = item.ToString();
}
else
{
textBox1.Text = textBox1.Text + "," + item.ToString();
}
listBoxControl1.Items.Remove(item);
}
它给了我一些逻辑来解决这个问题。我修改了一下你的解决方案,因为在textBox1.Text不是空字符串的情况下它会给出错误的结果。即当它进入你的代码的其他部分..但无论如何.. – 2013-03-15 08:40:41