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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM