如何让treenode 的一部分Text 变色

jy03170490 2009-04-15 10:37:57
如何让treenode 的一部分Text 变色
如 根接点[0]
就是让[] 中的0 变成别的颜色
...全文
114 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jy03170490 2009-04-16
  • 打赏
  • 举报
回复
谢谢了
zgke 2009-04-15
  • 打赏
  • 举报
回复
private void Form1_Load(object sender, EventArgs e)
{
treeView1.DrawMode = TreeViewDrawMode.OwnerDrawText;
treeView1.DrawNode+=new DrawTreeNodeEventHandler(treeView1_DrawNode);
treeView1.Nodes.Add("Text[1]");
}
private void treeView1_DrawNode(object sender, DrawTreeNodeEventArgs e)
{
TreeView _TreeView =(TreeView)sender;
Color _Color = Color.Black;
if (!e.Node.IsVisible) return;

if (e.Node.IsSelected) _Color = Color.White;
string[] _Value = e.Node.Text.Split(new char[] { '[', ']' },StringSplitOptions.RemoveEmptyEntries);

int _X = e.Bounds.X;
int _SizeView=4;
if (_Value.Length == 2)
{
e.Graphics.DrawString(_Value[0], _TreeView.Font, new SolidBrush(_Color), _X, e.Bounds.Y);
SizeF _Size= e.Graphics.MeasureString(_Value[0], _TreeView.Font);
e.Graphics.DrawString("[", _TreeView.Font, new SolidBrush(_Color), _X + _Size.Width - _SizeView, e.Bounds.Y);
_X += (int)_Size.Width - _SizeView;
_Size = e.Graphics.MeasureString("[", _TreeView.Font);
e.Graphics.DrawString(_Value[1], _TreeView.Font, new SolidBrush(Color.Red), _X + _Size.Width - _SizeView, e.Bounds.Y);
_X += (int)_Size.Width - _SizeView;
_Size = e.Graphics.MeasureString(_Value[1], _TreeView.Font);
e.Graphics.DrawString("]", _TreeView.Font, new SolidBrush(_Color), _X + _Size.Width - _SizeView, e.Bounds.Y);
}
else
{
e.Graphics.DrawString(e.Node.Text, _TreeView.Font, new SolidBrush(_Color), e.Bounds);
}


}
}
blestcc 2009-04-15
  • 打赏
  • 举报
回复
web程序的話好辦,winform可能要換控件了
十八道胡同 2009-04-15
  • 打赏
  • 举报
回复
up
dd__dd 2009-04-15
  • 打赏
  • 举报
回复
up
冷月孤峰 2009-04-15
  • 打赏
  • 举报
回复
itcrazyman 2009-04-15
  • 打赏
  • 举报
回复
mark up 帮顶
ecp2008 2009-04-15
  • 打赏
  • 举报
回复
winform好像没法儿实现,请楼主提问时明确一点吧
xiaotupansy 2009-04-15
  • 打赏
  • 举报
回复
如果是web的话,因为TreeNode不是继承自Control或者WebControl的,所以无法通过Attributes这个属性来添加相关的设置代码

另外微软的TreeView控件也没有暴露相关的设置属性,所以通过后台代码来设置的方法应该是行不通的

这样的话只能考虑前台通过js的方法来实现了

TreeView的话生成的html符号是table,对他的每个节点(每一行)来说,都是生成的一个子table
可以通过js找到你要设置的对象然后设置就可以了

这种方法一个要求treeview的结构要固定,二要求你的js要过关

另外就是考虑下找找第三方控件看看有没有符合你要求的了,实在不行么只有自己做个自定义控件了...

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧