C# TreeView树控件,失去焦点仍然高亮显示,右击节点时才弹出右键菜单,空白处右击不弹出菜单

转载 2012年02月08日 15:00:39

http://www.cnblogs.com/Ruiky/archive/2012/01/19/2326222.html


实现的功能(C#的树控件 - TreeView控件):

1、右击树节点所在区域时,才会弹出快捷菜单(右键菜单)。

2、树控件失去焦点时,被选中的节点,仍然高亮显示。

先看效果:

图1 失去焦点时仍然高亮显示(颜色可以自己设置)

图2 只会在选中的节点右下方弹出菜单

实现方法详解(有时间再写):


实现的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace TreeViewDemo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            //清空
            treeView1.Nodes.Clear();
            //treeView1.HideSelection = false;
            textBox1.Text = "节点";
        }

        //失去焦点时
        private void treeView1_Leave(object sender, EventArgs e)
        {

            if(treeView1.SelectedNode!=null)
            {
                //让选中项背景色呈现红色
                treeView1.SelectedNode.BackColor = Color.Red;
                //前景色为白色
                treeView1.SelectedNode.ForeColor = Color.White;
            }
        }

        //鼠标点击节点时触发
        private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {

            //判断是否是右击
            if (e.Button == MouseButtons.Right)
            {
                //选中点击的节点
                treeView1.SelectedNode = e.Node;
                //获取节点区域的右下角坐标值
                Point pos = new Point(e.Node.Bounds.X + e.Node.Bounds.Width, e.Node.Bounds.Y + e.Node.Bounds.Height);

                //在选中的节点的右下角,弹出右键菜单,并设定控制者为treeView
                contextMenuStrip1.Show(treeView1, pos);
            }
        }

       //将要选中新节点之前发生
        private void treeView1_BeforeSelect(object sender, TreeViewCancelEventArgs e)
        {

            if (treeView1.SelectedNode != null)
            {
                //将上一个选中的节点背景色还原(原先没有颜色)
                treeView1.SelectedNode.BackColor = Color.Empty;
                //还原前景色
                treeView1.SelectedNode.ForeColor = Color.Black;
            }
        }
    }
}


QT Qtreewidget操作 右键菜单响应等

想完成树节点的右键菜单操作,查阅了很多资料后,终于找到了一种解决方法。但是不敢保证这是好方法,如果有更好的方法,可以留言,共同进步。 qtcreator创建了一个mainwindow工程。 ...
  • XuePiaoFei1
  • XuePiaoFei1
  • 2015年06月17日 15:49
  • 2104

c#判断右键菜单(ContextMenuStrip)是从哪个控件弹出来的方法

两个Panel控件,里分分别有一个Label,分别是label1,text是192.168.1.2,和label2,text是192.168.1.3,代表客户端的两台客户机, 这两个label都...
  • oNicolasCage
  • oNicolasCage
  • 2015年05月29日 17:23
  • 1936

jquery实现鼠标右击出现菜单

页面如图所示: css样式:    body{ position:relative;} ul,li{ margin:0; padding:0; list-style:none; font-size...
  • hwsdau
  • hwsdau
  • 2016年11月11日 20:36
  • 2958

在控件上右击弹出菜单

  • 2011年03月04日 18:26
  • 1KB
  • 下载

在控件上右击弹出菜单的资源

  • 2010年07月01日 10:04
  • 69KB
  • 下载

C# TEXTBOX屏蔽右击弹出系统菜单

  • 2013年07月13日 16:03
  • 38KB
  • 下载

C#TreeView窗体版点击右键弹出菜单+直接修改名称+新建节点

这个文章与之前写的“C#TreeView窗体版点击右键弹出菜单+右键获取信息”,有些不一样的地方。改进了,右键“新建”可以直接添加新的节点并且在节点上直接修改名字;右键“重命名”可以直接在节点上修改节...
  • small5e4444
  • small5e4444
  • 2011年12月07日 14:42
  • 9016

c#TreeView右键弹出菜单

  • 2013年01月11日 13:16
  • 79KB
  • 下载

TreeList 右击节点时才显示右键菜单,并使该节点获得焦点

//鼠标右击节点时该节点获得焦点,同时指定TreeList的ContextMenuStrip ;  2private void treelArea_MouseDown(object sender, ...
  • wangtao510
  • wangtao510
  • 2016年02月15日 13:55
  • 303

easyui-tabbar右击弹出菜单

  • 2016年09月14日 10:25
  • 7KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C# TreeView树控件,失去焦点仍然高亮显示,右击节点时才弹出右键菜单,空白处右击不弹出菜单
举报原因:
原因补充:

(最多只允许输入30个字)