您的位置:首页 > 编程语言 > C#

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

2012-02-08 15:00 1806 查看
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;

}

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐