BKi*_*mel 2 .net c# forms user-interface controls
好的,首先查看Windows桌面的上下文; 您可以在桌面上获取项目(文件夹,文件)并将它们拖动到不同的位置,然后它们"停留"在您拖动它们的位置.这似乎是一个非常有用的功能,为用户提供,以允许他们创建自己的"分组"的项目.
我的问题是:.NET中是否有一个控件用一组项来近似这种行为?
我正在考虑像"LargeIcon"模式中的listview,但它允许您将图标拖动到控件内的不同位置.
您可以通过实现拖放操作,使用标准ListView控件执行此操作.这是一个样本控件,它执行此操作:
using System;
using System.Drawing;
using System.Windows.Forms;
public class MyListView : ListView {
private Point mItemStartPos;
private Point mMouseStartPos;
public MyListView() {
this.AllowDrop = true;
this.View = View.LargeIcon;
this.AutoArrange = false;
this.DoubleBuffered = true;
}
protected override void OnDragEnter(DragEventArgs e) {
if (e.Data.GetData(typeof(ListViewItem)) != null) e.Effect = DragDropEffects.Move;
}
protected override void OnItemDrag(ItemDragEventArgs e) {
// Start dragging
ListViewItem item = e.Item as ListViewItem;
mItemStartPos = item.Position;
mMouseStartPos = Control.MousePosition;
this.DoDragDrop(item, DragDropEffects.Move);
}
protected override void OnDragOver(DragEventArgs e) {
// Move icon
ListViewItem item = e.Data.GetData(typeof(ListViewItem)) as ListViewItem;
if (item != null) {
Point mousePos = Control.MousePosition;
item.Position = new Point(mItemStartPos.X + mousePos.X - mMouseStartPos.X,
mItemStartPos.Y + mousePos.Y - mMouseStartPos.Y);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2463 次 |
| 最近记录: |