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;
                }
            }
        }
    }

  • 相关阅读:
    [LeetCode] Power of Three 判断3的次方数
    [LeetCode] 322. Coin Change 硬币找零
    [LeetCode] 321. Create Maximum Number 创建最大数
    ITK 3.20.1 VS2010 Configuration 配置
    VTK 5.10.1 VS2010 Configuration 配置
    FLTK 1.3.3 MinGW 4.9.1 Configuration 配置
    FLTK 1.1.10 VS2010 Configuration 配置
    Inheritance, Association, Aggregation, and Composition 类的继承,关联,聚合和组合的区别
    [LeetCode] Bulb Switcher 灯泡开关
    [LeetCode] Maximum Product of Word Lengths 单词长度的最大积
  • 原文地址:https://www.cnblogs.com/Ruiky/p/2326222.html
Copyright © 2011-2022 走看看