您的位置:首页 > 其它

用键盘上下左右键和ctrl键移动TreeView节点

2013-02-20 11:22 411 查看
/// <summary>
/// 用键盘上下左右键和ctrl键移动节点
/// 思路:现复制2个选中的节点。1.为了记住第一次选中节点位置,2在上移过程中现将令一个插入指定位置,
/// 然后将选中节点移除
/// </summary>
/// <param name="treeView">treeview</param>
/// <param name="e">键盘的按键</param>
private void MoveTreeNodeByKeyWord(TreeView treeView, KeyEventArgs e)
{
if (treeView.SelectedNode != null)
{
if (e.Control != true) return;

TreeNode tn = treeView.SelectedNode;
TreeNode tempNode = (TreeNode)treeView.SelectedNode.Clone();
switch (e.KeyCode)
{
case Keys.Up:
if (treeView.SelectedNode.PrevNode == null)
return;

if (tn.Parent == null)
treeView.Nodes.Insert(tn.Index + 2, tempNode);
else
tn.Parent.Nodes.Insert(tn.Index + 2, tempNode);

treeView.SelectedNode.Remove();
treeView.SelectedNode = tempNode;
break;
case Keys.Down:
if (treeView.SelectedNode.NextNode == null)
return;

if (tn.Parent == null)
treeView.Nodes.Insert(tn.Index + 2, tempNode);
else
tn.Parent.Nodes.Insert(tn.Index + 2, tempNode);

treeView.SelectedNode.Remove();
treeView.SelectedNode = tempNode;
break;
case Keys.Left:
if (treeView.SelectedNode.Parent == null)
return;
if (treeView.SelectedNode.Parent.Parent == null)
treeView.Nodes.Add(tempNode);
else
tn.Parent.Parent.Nodes.Add(tempNode);

tn.Remove();
treeView.SelectedNode = tempNode;
break;
case Keys.Right:
if (treeView.SelectedNode.NextNode == null)
return;
treeView.SelectedNode.NextNode.Nodes.Insert(0, tempNode);
tn.Remove();
treeView.SelectedNode = tempNode;
break;
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: