zoukankan      html  css  js  c++  java
  • C# TreeView树控件,失去焦点仍然高亮显示,右击节点时才弹出右键菜单,空白处右击不弹出菜单

    实现的功能(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;
                }
            }
        }
    }

  • 相关阅读:
    [日常工作]WorkStation 使用端口转发的方式使用宿主机IP地址提供服务
    [日常工作]虚拟机或者实体机转换成HyperV虚拟机的方法
    [linux学习]sysctl 以及 net.ipv4.ip_forward
    [自学]Docker system 命令 查看docker镜像磁盘占用情况 Docker volume 相关
    Docker 修改默认存储路径的一个方法
    [学习笔记]Ubuntu下安装配置SQLSERVER2017
    VSCODE安装以及使用Python运行调试代码的简单记录
    Win2012r2 以及win2016 安装.NET3.5
    Win2016以及win10 IIS10 下安装IEwebcontrol的方法
    [日常工作]协助同事从不能开机的机器上面获取资料信息
  • 原文地址:https://www.cnblogs.com/Ruiky/p/2326222.html
Copyright © 2011-2022 走看看