private void treeView_Jia_DragEnter(object sender, DragEventArgs e)
{
this.textBox1.Text = e.X.ToString() + "--" + e.Y.ToString();
TreeNode myNode = (TreeNode)(e.Data.GetData(typeof(TreeNode)));
if (e.Data.GetDataPresent(typeof(TreeNode)))
{
if (((TreeNode)(myNode.Clone())).Nodes.Count > 0) //判断 移动的不是跟节点
e.Effect = DragDropEffects.None;
else
{
TreeNode DropNode = this.treeView_Jia.GetNodeAt(e.X, e.Y);//这里的坐标就是鼠标第一次进入控件的位置 如何在这里修改 根据鼠标位置的变化 获取TreeNode节点信息呢??????
// e.Effect = DragDropEffects.Copy;
}
}
else
e.Effect = DragDropEffects.None;
}
各位大侠 主要是空色字体地方 要修改下 有什么好的建议??????
{
this.textBox1.Text = e.X.ToString() + "--" + e.Y.ToString();
TreeNode myNode = (TreeNode)(e.Data.GetData(typeof(TreeNode)));
if (e.Data.GetDataPresent(typeof(TreeNode)))
{
if (((TreeNode)(myNode.Clone())).Nodes.Count > 0) //判断 移动的不是跟节点
e.Effect = DragDropEffects.None;
else
{
TreeNode DropNode = this.treeView_Jia.GetNodeAt(e.X, e.Y);//这里的坐标就是鼠标第一次进入控件的位置 如何在这里修改 根据鼠标位置的变化 获取TreeNode节点信息呢??????
// e.Effect = DragDropEffects.Copy;
}
}
else
e.Effect = DragDropEffects.None;
}
各位大侠 主要是空色字体地方 要修改下 有什么好的建议??????
解决方案 »
- VS 能把.CS文件 编译成.DLL吗 怎么编译
- C#中的名称空间究竟是什么含义?
- C# 调用C开发的动态链接库DLL 报 尝试读取或写入受保护的内存。
- 逐个读取数据表的信息???????
- Custom assembly, not a trusted assembly
- 请问怎么把TreeView的数据以XML文档的形式导出???
- 怎么样取得XML文件中两个标签之间的内容?
- 对创建共享程序集和配置不是很理解,欢迎大家来说说
- bs构架下crystal report 怎么实现在线打印??剧给分
- 利用正则表达式验证某字符串是否同时存在指定的汉字?
- 求截取价格正则表达式
- 急!怎么在DataGrid时间格式yyyy-MM
通过这段代码(TreeNode DropNode = this.treeView_Jia.GetNodeAt(e.X, e.Y);)获取treenode对象 在根据treenode是否为空 判断 e.Effect 的状态(Copy或者None)
问题就是 这个e.X 和e.Y 是第一次进入控件的坐标 之后 在控件内 在移动鼠标 这个坐标值就不变化了.从而导致treenode对象一直没变化...
private void treeView1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
this.treeView1.SelectedNode = treeView1.GetNodeAt(e.Location);
this.treeView1.DoDragDrop(this.treeView1.SelectedNode, DragDropEffects.All);
}
} private void treeView1_DragEnter(object sender, DragEventArgs e)
{
if ((e.Data.GetDataPresent(typeof(TreeNode))))
{
e.Effect = DragDropEffects.All;
}
} private void treeView1_DragDrop(object sender, DragEventArgs e)
{
//因为这里的x,y坐标是全局的,所以要转换一下。
Point newLocation = treeView1.PointToClient(new Point(e.X, e.Y));
TreeNode targetNode = this.treeView1.GetNodeAt(newLocation); TreeNode tn = e.Data.GetData(typeof(TreeNode)) as TreeNode; if (targetNode == tn)
return; tn.Parent.Nodes.Remove(tn); targetNode.Nodes.Add(tn);
}写了个简单的demo你参考一下。