TreeView 中,如果使右键单击和左键单击一样,单击空白处不选择任何一个node。现在测试的结果来看,发现右键单击空白处,只要有 node 和他在同一水平位置,就会选中。而左键单击就不会,左键只有单击到 node 的 text 才会选中。
下面是右键单击事件,通过 GetNodeAt(e.X,e.Y);
private void treeMsDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(e.Button == MouseButtons.Right)
{
TreeNode tn = this.TreeView.GetNodeAt(e.X,e.Y);
if(tn==null)
{
return;
}
TreeView.SelectedNode = tn;
}
}

解决方案 »

  1.   

    顶一下。 唉。
    难道要自己根据 node.text 算出长度,然后根据 e.X 重新判断一下?
      

  2.   


    顶一下,另一个问题。C# 中 Recordset 中的 RecordCount 为什么总是返回 -1  
    http://community.csdn.net/Expert/topic/4985/4985677.xml?temp=.8503687
      

  3.   

    Sample code as follows:
    if(e.Button == MouseButtons.Right)
    {
    TreeNode tn = this.TreeView.GetNodeAt(e.X,e.Y);
    if(tn==null)
    {
    return;
    }
    else( tn.Bounds.Contains( e.X, e.Y ) )
    {
    TreeView.SelectedNode = tn;
    }
    }