接受树节点拖拽的listview
来源:互联网 发布:80端口被系统服务占用 编辑:程序博客网 时间:2024/05/20 18:53
using System;
using System.Windows.Forms;
using System.Drawing;
using System.IO;
using System.Runtime.InteropServices;
namespace jy_controls
{
/// <summary>
/// jyListview 的摘要说明。
/// </summary>
public class jyListview : System.Windows.Forms.ListView
{
public jyListview()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public delegate void hDragDrop(object Items);
public event hDragDrop DragDropItem;
protected override void OnDragEnter(System.Windows.Forms.DragEventArgs drgevent)
{
base.OnDragEnter(drgevent);
if(this.AllowDrop)
{
drgevent.Effect = DragDropEffects.Move;
}
}
protected override void WndProc(ref System.Windows.Forms.Message m)
{
base.WndProc (ref m);
switch(m.Msg)
{
case 0x83:
// Console.Write(m.Msg.ToString()+"/n");
// IntPtr hDC = jy_controls.DrawA.GetWindowDC(m.HWnd);
// System.Drawing.Graphics gs = System.Drawing.Graphics.FromHdc(hDC);
// System.Drawing.Image image = new System.Drawing.Bitmap("jylogo.ico");
// gs.DrawImage(image,new System.Drawing.Point(0,0));
break;
}
}
protected override void OnItemDrag(ItemDragEventArgs e)
{
base.OnItemDrag (e);
DoDragDrop(e.Item, DragDropEffects.Move);
}
ListViewItem curDropItem = null;
Color curColor;
protected override void OnDragOver(DragEventArgs drgevent)
{
base.OnDragOver (drgevent);
if(this.AllowDrop)
{
ListViewItem DropItem = this.GetItemAt(drgevent.X,drgevent.Y);
if(drgevent.Data.GetDataPresent(typeof(ListViewItem)))
{
ListViewItem myItem = (ListViewItem)(drgevent.Data.GetData(typeof(ListViewItem)));
if (DropItem != null && DropItem != myItem)
{
curColor = DropItem.BackColor;
DropItem.BackColor = Color.Red;
}
}
else
{
if (DropItem != null)
{
curColor = DropItem.BackColor;
DropItem.BackColor = Color.Red;
}
}
curDropItem = DropItem;
if(curDropItem != null)
{
curDropItem.BackColor = curColor;
}
}
}
protected override void OnDragDrop(System.Windows.Forms.DragEventArgs drgevent)
{
base.OnDragDrop (drgevent);
if(this.AllowDrop)
{
ListViewItem DropItem = this.curDropItem;
try
{
if (drgevent.Data.GetDataPresent(typeof(ListViewItem)))
{
ListViewItem myItem = (ListViewItem)(drgevent.Data.GetData(typeof(ListViewItem)));
if (DropItem != null && DropItem != myItem)
{
if(DragDropItem != null)
{
this.DragDropItem(myItem);
}
else
{
ListViewItem DragItem = myItem;
myItem.Remove();
this.Items.Add(DragItem);
}
}
}
else if(drgevent.Data.GetDataPresent(typeof(TreeNode)))
{
TreeNode item = (TreeNode)drgevent.Data.GetData(typeof(TreeNode));
if(DragDropItem != null)
{
this.DragDropItem(item);
}
else
{
ListViewItem litem = new ListViewItem();
litem.Text = item.Text;
litem.Tag = item.Tag;
this.Items.Add(litem);
}
}
else if(drgevent.Data.GetDataPresent(typeof(object)))
{
if(DragDropItem != null)
{
this.DragDropItem(drgevent.Data.GetData(typeof(object)));
}
else
{
ListViewItem litem1 = new ListViewItem();
litem1.Text = drgevent.Data.GetData(typeof(object)).ToString();
litem1.Tag = drgevent.Data.GetData(typeof(object));
this.Items.Add(litem1);
}
}
else
{
if(DragDropItem != null)
{
this.DragDropItem(drgevent);
}
}
}
catch{}
}
}
}
}
- 接受树节点拖拽的listview
- 接受拖拽的richtextbox
- 接受文件拖拽窗口的实现
- ccflow 每个节点的下一步接受的人投递规则
- Android PopupWindow中ListView 无法接受点击事件的处理
- C#实现listview中节点的拖拉
- 对于MFC中窗口接受文件的拖拽功能
- listview的拖拽
- TreeView 的节点拖拽
- PopupWindow内ListView无法接受点击事件 原因之:TextView的clickable属性
- VC对话框如何接受拖拽文件
- easyui树节点拖拽排序的存储过程
- easyui的tree节点的拖拽
- 删除树节点下的所有节点
- 二叉树两个节点的公共节点
- 找二叉树节点的下一个节点
- 接受信息的态度
- 接受程序设计语言的再教育
- Linux下怎样启动vncserver(HOWTO - Linux VNCserver)
- web.xml配置详细说明
- 程序员MM一年的工作总结
- 个人学习Linux知识总结
- 一个合格的程序员该做的事情
- 接受树节点拖拽的listview
- 计算机中的回溯
- ClassFile
- 自己写的一个pull模式的source filter,播放mpeg1 2可以,而播放wmv不行的问题
- ASP.NET中用哪种方式表格化数据
- 在fedora core 4使用Atheros芯片无线网卡
- Google新的搜索页面
- Hibernate2.x和Hibernate3.x的重大区别
- COM组件设计与应用8 - 实现多接口