我正在尝试向标准 System.Windows.Forms.TreeView 控件的元素添加更多图标。
我的计划是只更改树视图控件的标签区域,但它显示出一种奇怪的行为。如果我单击一个节点来选择它,当按下鼠标按钮时,背景会以高亮颜色正确绘制。但是,在我释放鼠标按钮之前,文本是错误的未选择颜色。好像e.State
在按下和释放鼠标按钮之间包含错误的状态。
这就是我正在做的事情:我用 .init 初始化,this.DrawMode = TreeViewDrawMode.OwnerDrawText
然后用this.DrawNode += LayoutTreeView_DrawNode
. 这是处理程序:
void LayoutTreeView_DrawNode(object sender, DrawTreeNodeEventArgs e)
{
Color color = (e.State & TreeNodeStates.Selected) != 0 ?
SystemColors.HighlightText : SystemColors.WindowText;
TextFormatFlags flags = TextFormatFlags.Left | TextFormatFlags.SingleLine |
TextFormatFlags.VerticalCenter | TextFormatFlags.EndEllipsis;
TextRenderer.DrawText(e.Graphics, e.Node.Text, Font, e.Bounds, color, flags);
}
如果我将处理程序设置为默认情况...
void LayoutTreeView_DrawNode(object sender, DrawTreeNodeEventArgs e)
{
e.DefaultDraw = true;
}
...同样的事情发生了,这很奇怪,因为 Windows 现在实际上正在绘制它。此行为在带有 .Net 3.5 的 Windows XP 中。
有没有办法解决这种奇怪的行为?