日期:2014-05-18  浏览次数:20814 次

关于Winform Tree,如何将鼠标移到文本时显示Hand,移出时还原?
private void tree_NodeMouseHover(object sender, TreeNodeMouseHoverEventArgs e)
{
  tree.Cursor = Cursors.Hand;
}

private void tree_MouseMove(object sender, MouseEventArgs e)
{
  TreeNode tn = this.tree.GetNodeAt(e.X, e.Y);
  if (tn == null)
  {
  Cursor = Cursors.Default;
  }
}

代码如上,我想当鼠标离开文本的时候,鼠标还原,而上述的程序在鼠标离开文本的时候并且hover在与文本水平的位置上时,鼠标也是手状的,而我只是想鼠标hover到文本时,才显示手状。
大家可以看看Windows OS Explorer的效果。

请问如何修改上面的代码啊?谢谢~~

------解决方案--------------------
C# code

private void treeView1_MouseLeave(object sender, EventArgs e)
{
    Cursor.Current = Cursors.Default;
}

private void treeView1_MouseMove(object sender, MouseEventArgs e)
{
    TreeNode node = this.treeView1.GetNodeAt(e.Location);
    if (node == null)
    {
        Cursor.Current = Cursors.Default;
        return;
    }

    Cursor.Current = 
        e.X < node.Bounds.Left || e.X > node.Bounds.Right ? 
        Cursors.Default : Cursors.Hand;
}