#region "拖放相关"
public bool CanDragDrop
{
get{return _CanDragDrop;}
set
{
_CanDragDrop=value;
if (_CanDragDrop)
{
this.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(TreeView_ItemDrag);
this.DragEnter += new System.Windows.Forms.DragEventHandler(TreeView_DragEnter);
this.DragDrop += new System.Windows.Forms.DragEventHandler(TreeView_DragDrop);
}
else
{
this.ItemDrag -= new System.Windows.Forms.ItemDragEventHandler(TreeView_ItemDrag);
this.DragEnter -= new System.Windows.Forms.DragEventHandler(TreeView_DragEnter);
this.DragDrop -= new System.Windows.Forms.DragEventHandler(TreeView_DragDrop);}
}
}protected void TreeView_ItemDrag(object sender, System.Windows.Forms.ItemDragEventArgs e)
{
this._DragNode = (TreeNode)e.Item;
string strItem = e.Item.ToString();
DoDragDrop(strItem, DragDropEffects.Copy | DragDropEffects.Move);
}protected void TreeView_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.Text))
{
if ((e.KeyState & 4) == 4 && (e.AllowedEffect & DragDropEffects.Move) == DragDropEffects.Move)
{ // SHIFT KeyState for move.
e.Effect = DragDropEffects.Move;
}
else if ((e.KeyState & 8) == 8 && (e.AllowedEffect & DragDropEffects.Copy) == DragDropEffects.Copy)
{
// CTL KeyState for copy.
e.Effect = DragDropEffects.Copy;
}
else if ((e.AllowedEffect & DragDropEffects.Move) == DragDropEffects.Move)
{
// By default, the drop action should be move, if allowed.
e.Effect = DragDropEffects.Move;}
else
e.Effect = DragDropEffects.None;
}
else
e.Effect = DragDropEffects.None;}
protected void TreeView_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
Point Position = new Point(e.X ,e.Y );
Position = this.PointToClient(Position);
TreeNode DropNode = this.GetNodeAt(Position);TreeNode tNode=(TreeNode)_DragNode.Clone (); //因为拖放操作可能是复制型,
if (DropNode != null )
{ this.AddNode (DropNode,tNode); }
else
{ this.AddNode (null,tNode); }
if ((e.Effect & DragDropEffects.Move) ==DragDropEffects.Move )
{ this.DeleteNode(_DragNode); }}
public bool CanDragDrop
{
get{return _CanDragDrop;}
set
{
_CanDragDrop=value;
if (_CanDragDrop)
{
this.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(TreeView_ItemDrag);
this.DragEnter += new System.Windows.Forms.DragEventHandler(TreeView_DragEnter);
this.DragDrop += new System.Windows.Forms.DragEventHandler(TreeView_DragDrop);
}
else
{
this.ItemDrag -= new System.Windows.Forms.ItemDragEventHandler(TreeView_ItemDrag);
this.DragEnter -= new System.Windows.Forms.DragEventHandler(TreeView_DragEnter);
this.DragDrop -= new System.Windows.Forms.DragEventHandler(TreeView_DragDrop);}
}
}protected void TreeView_ItemDrag(object sender, System.Windows.Forms.ItemDragEventArgs e)
{
this._DragNode = (TreeNode)e.Item;
string strItem = e.Item.ToString();
DoDragDrop(strItem, DragDropEffects.Copy | DragDropEffects.Move);
}protected void TreeView_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.Text))
{
if ((e.KeyState & 4) == 4 && (e.AllowedEffect & DragDropEffects.Move) == DragDropEffects.Move)
{ // SHIFT KeyState for move.
e.Effect = DragDropEffects.Move;
}
else if ((e.KeyState & 8) == 8 && (e.AllowedEffect & DragDropEffects.Copy) == DragDropEffects.Copy)
{
// CTL KeyState for copy.
e.Effect = DragDropEffects.Copy;
}
else if ((e.AllowedEffect & DragDropEffects.Move) == DragDropEffects.Move)
{
// By default, the drop action should be move, if allowed.
e.Effect = DragDropEffects.Move;}
else
e.Effect = DragDropEffects.None;
}
else
e.Effect = DragDropEffects.None;}
protected void TreeView_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
Point Position = new Point(e.X ,e.Y );
Position = this.PointToClient(Position);
TreeNode DropNode = this.GetNodeAt(Position);TreeNode tNode=(TreeNode)_DragNode.Clone (); //因为拖放操作可能是复制型,
if (DropNode != null )
{ this.AddNode (DropNode,tNode); }
else
{ this.AddNode (null,tNode); }
if ((e.Effect & DragDropEffects.Move) ==DragDropEffects.Move )
{ this.DeleteNode(_DragNode); }}
解决方案 »
- 一个关于新建网页的超级简单问题,急!在线等候!
- hook 在。net 中能否实现? 什么地方会用到他呢
- 如何把xml数据导入到数据库中(windows应用程序)?
- 怎么把XML内容加到treeview中
- ==SOS== 我的系统被什么占用了? ==SOS==
- 新手求救,如何对serialport设置
- C# 模拟登录(带验证码),求助啊!高手们请赐教 :(
- winform到web的一个问题
- winform 运行中修改了配置信息,怎么重新读取配置文件
- treeview如何显示多表中的数据?
- 网络编程的问题
- (C#)FileStream、StreamReader从文件读出来的“中文”怎么没办法显示?
/// 加一个Node至指定的上级Node
/// </summary>
public bool AddNode(TreeNode parentNode,TreeNode node)
{ .... }