3
A
回答
3
1
在.net中执行拖放控制的正确方法是在第二个控件的DragDrop事件处理程序中运行代码。
它可能“闻”怪异,但这是它如何在.NET中工作。
1
谷歌给这个:http://www.codeproject.com/KB/dotnet/csdragndrop01.aspx
这似乎是一个相当合理的教程。如果它味道不好,我认为这更多的与拖放的API使用比较麻烦,而不是教程本身很差。
7
下面是一个示例表单。开始使用新的WF项目并在窗体上放置两个列表框。使代码如下所示:
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
listBox1.Items.AddRange(new object[] { "one", "two", "three" });
listBox1.MouseDown += new MouseEventHandler(listBox1_MouseDown);
listBox1.MouseMove += new MouseEventHandler(listBox1_MouseMove);
listBox2.AllowDrop = true;
listBox2.DragEnter += new DragEventHandler(listBox2_DragEnter);
listBox2.DragDrop += new DragEventHandler(listBox2_DragDrop);
}
private Point mDownPos;
void listBox1_MouseDown(object sender, MouseEventArgs e) {
mDownPos = e.Location;
}
void listBox1_MouseMove(object sender, MouseEventArgs e) {
if (e.Button != MouseButtons.Left) return;
int index = listBox1.IndexFromPoint(e.Location);
if (index < 0) return;
if (Math.Abs(e.X - mDownPos.X) >= SystemInformation.DragSize.Width ||
Math.Abs(e.Y - mDownPos.Y) >= SystemInformation.DragSize.Height)
DoDragDrop(new DragObject(listBox1, listBox1.Items[index]), DragDropEffects.Move);
}
void listBox2_DragEnter(object sender, DragEventArgs e) {
DragObject obj = e.Data.GetData(typeof(DragObject)) as DragObject;
if (obj != null && obj.source != listBox2) e.Effect = e.AllowedEffect;
}
void listBox2_DragDrop(object sender, DragEventArgs e) {
DragObject obj = e.Data.GetData(typeof(DragObject)) as DragObject;
listBox2.Items.Add(obj.item);
obj.source.Items.Remove(obj.item);
}
private class DragObject {
public ListBox source;
public object item;
public DragObject(ListBox box, object data) { source = box; item = data; }
}
}
相关问题
- 1. 如何在XUL中的两个列表框之间拖放?
- 2. ASP.NET在两个列表框之间拖放
- 3. 使用值在两个列表框之间拖放
- 4. 在两个数据表之间拖放
- 5. 在两个表格之间拖放n个拖放
- 6. ReactJS:在多个列表之间拖放
- 7. Javascript/jquery在两个树视图列表之间拖放
- 8. Jquery + Rails - 在两个列表之间拖放
- 9. 如何在两个列表之间拖放WPF?
- 10. R gWidgets在两个gtables之间拖放
- 11. 在两个Fancetrees之间拖放
- 12. 在两个片段之间拖放
- 13. SDK2:在两个网格之间拖放
- 14. jquery在两个元素之间拖放
- 15. 在两个QTreeWidgets之间拖放
- 16. 在两个dyna tress之间的拖放
- 17. 拖放两个列表框之间没有添加或删除按钮在ASP.net
- 18. 两个UICollectionViews之间的拖放
- 19. 拖放两个片段之间?
- 20. 用两个datagridviews在两个窗体之间拖放c#
- 21. 使用watir webdriver在两个SVG图表之间拖放
- 22. 在框架之间拖放 - 镀铬
- 23. jQuery的拖放 - 两个列表之间拖动,如何在降删除所选列表
- 24. jquery拖放 - 在两个列表之间拖拽,如何删除选中列表中的drop
- 25. 如何在android中的两个列表之间实现拖放项目?
- 26. jQuery Draggable + Sortable - 如何在两个可滚动列表之间拖放
- 27. 在Asp.Net中拖放2列表框内的2个列表框
- 28. 如何编程两个表之间的拖放操作
- 29. Interactjs拖放 - 不能放在重叠的下拉列表之间
- 30. 在两个或多个窗口之间拖放QDockWidget
“真的不好闻。”澄清。 – MiffTheFox
从来没有听说过代码味道? ;) – Jrud
我很欣赏我对这个派对迟了三年,但这就是维基百科对代码气味所说的话:http://en.wikipedia.org/wiki/Code_smell – Surfbutler