如何选中 treeview  一个节点后光标移走点按钮, 那个节点还是显示成选中的那种状态。

解决方案 »

  1.   

    treeView1.HideSelection = false;
      

  2.   


    我做的项目中也没处理,这是WINDOWS控件的标准处理方法,没必要在这上面多费时间。
      

  3.   


    可以动态设置一下:
    treeView1.SelectedNode.ForeColor = Color.Black;
    treeView1.SelectedNode.BackColor = Color.Blue;
      

  4.   

    用DrawNode自己画.private void treeView1_DrawNode(object sender, DrawTreeNodeEventArgs e)
            {            if (e.State == TreeNodeStates.Selected)
                {
                    e.Graphics.FillRectangle(new SolidBrush(SystemColors.ActiveCaption), e.Bounds);
                    e.Graphics.DrawString(e.Node.Text, this.Font, Brushes.White, e.Bounds);
                }
                else
                    e.DrawDefault = true;//
    设置:
        this.treeView1.DrawMode = System.Windows.Forms.TreeViewDrawMode.OwnerDrawText;
                this.treeView1.HideSelection = false;
            }
      

  5.   

    我试了下,完全符合你的要求,虽然失去焦点了,但看起来还是选择的样子:TreeNode node = null;//全局变量,保存TreeView当前节点
            private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
            {
                if (node != null)
                {
                    node.BackColor = SystemColors.Window;//上次选择的节点恢复到默认背景色
                }
                e.Node.BackColor = SystemColors.ActiveCaption;//当前选择的节点激活背景色
                node = e.Node;//更新当前节点
            }上面的颜色我是用的Windows的默认值,你可以改成自己的
      

  6.   

    上面,是这个问题最最合理、最简单的设置。选中项颜色变暗,是有含义的.表示当前控件不是输入焦点了,不会响应按键事件。当然,可以用设置背景、重画等多种方法任意改变选中后的状态。这样会带来许多副作用:
    (1)分不清控件焦点,不符合Windows操作者的习惯,不符合Windows开发标准。 参考:资源管理器
    (2)降低控件效率,节点多的时候影响更大。
    (3)如果许多控件照此处理,会多出许多无价值的代码行,增加软件维护成本。
      

  7.   

    .HideSelection = false;即可!