我在vs.net2003中用TreeView控件建了一个类似Windows资源管理器的东西,
请问在这个控件中怎么实现资源管理器中目录拖放(光在目录中进行拖放)的功能。
请教高手,最好有事例。
请问在这个控件中怎么实现资源管理器中目录拖放(光在目录中进行拖放)的功能。
请教高手,最好有事例。
解决方案 »
- C# 制作启动画面 (Splash Screen)
- 写二进制文件时我用BinaryWriter 写整形时是先写低字节,后写高字节。请问如何先写高字节啊。
- ADO.NET问题
- Infragistics.Win.UltraWinGrid.UltraGrid ultraGrid1单击列标题对网格进行重新排序
- 怎样获取另一个第三方程序的窗口中某控件的值
- TestDrvier.NET的使用
- 如何删除数据源里的一条记录?
- 关于外部函数的指针问题
- 在某段代码里new了一个form,并form.show();后面还有几句代码。我想要等此窗口关掉後,再执行下面的代码,请问怎样实现?
- win2003 vs.net7.0 事务出错
- 如何通过客户端程序(winform程序)将internet服务器上的文件夹中的图片下载到本地?
- C#如何直接从一个网页中复制其中的超链接?
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.TreeView treeView1;
private System.Windows.Forms.ImageList imageList1; public Form1()
{
InitializeComponent();
}
#region Windows 窗体设计器生成的代码
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(Form1));
this.treeView1 = new System.Windows.Forms.TreeView();
this.imageList1 = new System.Windows.Forms.ImageList(this.components);
this.SuspendLayout();
//
// treeView1
//
this.treeView1.AllowDrop = true;
this.treeView1.Font = new System.Drawing.Font("宋体", 12F);
this.treeView1.ImageList = this.imageList1;
this.treeView1.Location = new System.Drawing.Point(8, 8);
this.treeView1.Name = "treeView1";
this.treeView1.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
new System.Windows.Forms.TreeNode("This is a very simple example", 1, 1),
new System.Windows.Forms.TreeNode("but i dont know another way to do such", 2, 2),
new System.Windows.Forms.TreeNode("so I think I can realise this a ticky way", 3, 3),
new System.Windows.Forms.TreeNode("yes if this is helpful for you ,that is my glad ", 4, 4),
new System.Windows.Forms.TreeNode("ok that is all,have a good day", 0, 0)});
this.treeView1.Size = new System.Drawing.Size(360, 264);
this.treeView1.TabIndex = 0;
this.treeView1.DragOver += new System.Windows.Forms.DragEventHandler(this.treeView1_DragOver);
this.treeView1.DragEnter += new System.Windows.Forms.DragEventHandler(this.treeView1_DragEnter);
this.treeView1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.treeView1_MouseMove);
this.treeView1.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.treeView1_ItemDrag);
this.treeView1.DragLeave += new System.EventHandler(this.treeView1_DragLeave);
this.treeView1.DragDrop += new System.Windows.Forms.DragEventHandler(this.treeView1_DragDrop);
//
// imageList1
//
this.imageList1.ImageSize = new System.Drawing.Size(16, 16);
this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
this.imageList1.TransparentColor = System.Drawing.Color.Transparent;
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(376, 277);
this.Controls.Add(this.treeView1);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false); }
#endregion[STAThread]
static void Main()
{
Application.Run(new Form1());
} ImageForm form;
private void treeView1_ItemDrag(object sender, System.Windows.Forms.ItemDragEventArgs e)
{
TreeNode dragNode = (TreeNode)e.Item;
form = new ImageForm((Bitmap)imageList1.Images[dragNode.ImageIndex],dragNode.Text);
form.Load +=new EventHandler(form_Load);
form.TopLevel = false;
form.Visible = true;
this.Controls.Add(form);
form.BringToFront(); treeView1.DoDragDrop(e.Item,DragDropEffects.Move);
} private void treeView1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
if(e.Data.GetDataPresent(typeof(TreeNode)))
{
e.Effect = DragDropEffects.Move;
}
} private void treeView1_DragOver(object sender, System.Windows.Forms.DragEventArgs e)
{
TreeView tv = sender as TreeView;
TreeNode dragNode = (TreeNode)e.Data.GetData(typeof(TreeNode));
Point pt = ((TreeView)sender).PointToClient(new Point(e.X, e.Y));
form.Visible = true;
form.Location = new Point(pt.X + 18,pt.Y + 6);
form.BringToFront();
TreeNode overNode = ((TreeView)sender).GetNodeAt(pt);
treeView1.SelectedNode = overNode;
if(overNode == null || dragNode.Equals(overNode))
{
e.Effect = DragDropEffects.None;
}
else
{
e.Effect = DragDropEffects.Move;
}
} private void treeView1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
if(e.Effect == DragDropEffects.Move)
{
TreeView tv = sender as TreeView;
TreeNode dragNode = (TreeNode)e.Data.GetData(typeof(TreeNode));
Point pt = ((TreeView)sender).PointToClient(new Point(e.X, e.Y));
TreeNode destinationNode = ((TreeView)sender).GetNodeAt(pt);
if(destinationNode.Parent == null)
{
treeView1.Nodes.Insert(destinationNode.Index,(TreeNode)dragNode.Clone());
}
else
{
destinationNode.Parent.Nodes.Insert(destinationNode.Index,(TreeNode)dragNode.Clone());
}
if(dragNode.Parent == null)
{
treeView1.Nodes.Remove(dragNode);
}
else
{
dragNode.Parent.Nodes.Remove(dragNode);
}
}
}
private void treeView1_DragLeave(object sender, System.EventArgs e)
{
form.Visible = false;
} private void treeView1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(form != null)
{
this.Controls.Remove(form);
form = null;
}
}
}
2)节点 Node.DoDrag(...);
2)写DragDrop事件