c# TreeView失去焦点时节点颜色绘制突出显示
2016-07-21 12:00
417 查看
当焦点离开TreeView时,节点仍然带有些颜色显示,自带的颜色比较浅不容易看出。下面我们就来看看自己绘制的:
public Form()
{
InitializeComponent();
treeView1.HideSelection
= False;
//调用
this.treeView1.DrawMode = TreeViewDrawMode.OwnerDrawText;
this.treeView1.DrawNode += new DrawTreeNodeEventHandler(treeView1_DrawNode);
}
//自己绘制
private void treeView1_DrawNode(object sender, DrawTreeNodeEventArgs e)
{
//我这里用默认颜色即可,只需要在TreeView失去焦点时选中节点仍然突显
e.DrawDefault = true;
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);
}
}
}
public Form()
{
InitializeComponent();
treeView1.HideSelection
= False;
//调用
this.treeView1.DrawMode = TreeViewDrawMode.OwnerDrawText;
this.treeView1.DrawNode += new DrawTreeNodeEventHandler(treeView1_DrawNode);
}
//自己绘制
private void treeView1_DrawNode(object sender, DrawTreeNodeEventArgs e)
{
//我这里用默认颜色即可,只需要在TreeView失去焦点时选中节点仍然突显
e.DrawDefault = true;
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);
}
}
}
相关文章推荐
- csharp读取Xml文档
- C#编程.异常处理(Exception Handling Statements)
- 将xml文件转为c#对像
- c#事件和委托
- c#自定义集合类
- 未能加载文件或程序集“ICSharpCode.SharpZipLib”或它的某一个依赖项
- c# list排序的三种实现方式
- 事件的注册and派发
- C#修改文件或文件夹的权限,为指定用户、用户组添加完全控制权限
- 转:C# 使用NLog记录日志
- C#判断操作系统语言类型
- C#: Thread.Sleep(0) vs Sleep(1) vs Yeild
- C# .net 使用 SmtpClient 发邮件 ,发送邮箱的配置
- 关于c#中委托使用小结
- C# 读取EXCEL文件的三种经典方法
- C# 读取EXCEL文件的三种经典方法
- C# 读取EXCEL文件的三种经典方法
- C# 读取EXCEL文件的三种经典方法
- 使用C#进行系统编程
- c#:排序