WinForm C# TreeView改变选中节点颜色,失去焦点时选中节点仍突显。
2015-06-01 10:46
701 查看
当用户焦点离开TreeView时,TreeView选中节点仍然高亮,但是颜色太浅,几乎看不出来。
这里重写一下DrawMode();可以控制选中节点颜色。
TreeView.HideSelection = false;可让选中节点保持高亮。
参考:http://msdn.microsoft.com/zh-cn/library/system.windows.forms.treeview.hideselection(VS.80).aspx
这里重写一下DrawMode();可以控制选中节点颜色。
TreeView.HideSelection = false;可让选中节点保持高亮。
参考:http://msdn.microsoft.com/zh-cn/library/system.windows.forms.treeview.hideselection(VS.80).aspx
public FrmMain() { InitializeComponent(); treeView1.HideSelection = False; //自已绘制 this.treeView1.DrawMode = TreeViewDrawMode.OwnerDrawText; this.treeView1.DrawNode += new DrawTreeNodeEventHandler(treeView1_DrawNode); } //在绘制节点事件中,按自已想的绘制 private void treeView1_DrawNode(object sender, DrawTreeNodeEventArgs e) { e.DrawDefault = true; //我这里用默认颜色即可,只需要在TreeView失去焦点时选中节点仍然突显 return; if ((e.State & TreeNodeStates.Selected) != 0) { //演示为绿底白字 e.Graphics.FillRectangle(Brushes.DarkBlue, e.Node.Bounds); Font nodeFont = e.Node.NodeFont; if (nodeFont == null) nodeFont = ((TreeView)sender).Font; e.Graphics.DrawString(e.Node.Text, nodeFont, Brushes.White,Rectangle.Inflate(e.Bounds, 2, 0)); } else { e.DrawDefault = true; } if ((e.State & TreeNodeStates.Focused) != 0) { using (Pen focusPen = new Pen(Color.Black)) { focusPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot; Rectangle focusBounds = e.Node.Bounds; focusBounds.Size = new Size(focusBounds.Width - 1, focusBounds.Height - 1); e.Graphics.DrawRectangle(focusPen, focusBounds); } } }
相关文章推荐
- C# 应用程序配置文件操作
- C#中的尾递归与Continuation详解
- 三层实战(C#)
- C#中方法的直接调用、反射调用与Lambda表达式调用对比
- C#正则表达式判断字符串是否是金钱
- C#第四次作业
- C#--WEb中登录时输入各项的验证
- 一看就懂:图解C#中的值类型、引用类型、栈、堆、ref、out
- C# 并行编程 之 PLINQ 基本使用
- C# 并行编程 之 原子操作
- C# 并行编程 之 限制资源的并发访问 使用SemaphoreSlim
- 关于正则表达式 C#
- C#第五次作业:开源项目“网页正文提取”的理解
- c#练习之超市收银系统
- C# ICSharpCode.SharpZipLib.dll文件压缩和解压功能类整理,上传文件或下载文件很常用
- C#登录成功提示和登录成功后进入新的窗口界面代码:
- C#中的委托和事件(续)
- 探索C#之虚拟桶分片
- 如何通过excel实现用户权限控制
- 大白话系列之C#委托与事件讲解(二)