treeview选中节点深色显示

itliyi 2009-04-13 02:00:02
winform
还是一样的问题,如何点击treeview节点深色显示,以提示用户当前选择项,并且选中之后点击添加按钮,treeview Enable 为false,但之前深色仍然存在

小弟我是这样做的

加载事件

this.tvFcList.DrawMode = TreeViewDrawMode.OwnerDrawAll;
this.tvFcList.DrawNode += new DrawTreeNodeEventHandler(tvFcList_DrawNode);


void tvFcList_DrawNode(object sender, DrawTreeNodeEventArgs e)
{
if ((e.State & TreeNodeStates.Selected) != 0)
{
//演示为绿底白字
e.Graphics.FillRectangle(Brushes.Silver, e.Node.Bounds);

Font nodeFont = e.Node.NodeFont;
if (nodeFont == null) nodeFont = ((TreeView)sender).Font;

//画刷坐标区域
e.Graphics.DrawString(e.Node.Text, nodeFont, Brushes.Black, e.Node.Bounds.X, e.Node.Bounds.Y);
}
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);
}
}

这样做是可以深色显示并且enble为false时也显示,但点击节点的时候父节点前面+号一级showline的线条在点击节点消失了,请教高手怎么做,或者有什么更好 更简单的方法,不胜感激
...全文
215 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
十八道胡同 2009-04-15
  • 打赏
  • 举报
回复
关注,帮顶
cRazyw_shen 2009-04-15
  • 打赏
  • 举报
回复
ding
lmmadcmm 2009-04-15
  • 打赏
  • 举报
回复
顶,顶,顶
itliyi 2009-04-13
  • 打赏
  • 举报
回复
1楼的方法我会,那有什么好的图片没有,加qq 363040367 谢谢
我之前也想过,只是没图片
txt_paul 2009-04-13
  • 打赏
  • 举报
回复
帮顶
xian_wwq 2009-04-13
  • 打赏
  • 举报
回复
可以给TreeNode的ImageIndex和SelectedImageIndex来赋值。
具体说来就是给Treeview绑定一个ImageList。
在节点加载、点击后变化所显示的图标,从而实现点选操作后的变化。

TreeNode tempnode = new TreeNode();
tempnode.Text = "test";
tempnode.ImageIndex = 1;
tempnode.SelectedImageIndex = 2;
MyTree.Nodes[0].Nodes.Add(tempnode);

供参考。

111,126

社区成员

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

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

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