實現的功能(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;
}
}
}
}