O proprietário do TreeView desenha uma falha ao selecionar

Estou tentando adicionar mais alguns ícones aos elementos de um controle System.Windows.Forms.TreeView padrão.

Meu plano era alterar apenas a área do rótulo do controle da árvore, mas isso mostra um comportamento estranho. Se eu clicar em um nó para selecioná-lo, quando o botão do mouse estiver pressionado, o plano de fundo será desenhado corretamente com a cor de destaque. No entanto, o texto tem a cor não selecionada incorreta até soltar o botão do mouse. É como see.State contém o estado incorreto entre quando o botão do mouse é pressionado e solto.

Aqui está o que estou fazendo: inicio comthis.DrawMode = TreeViewDrawMode.OwnerDrawText e registre meu manipulador de eventos comthis.DrawNode += LayoutTreeView_DrawNode. Aqui está o manipulador:

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);
}

Se eu definir o manipulador para o caso padrão ...

void LayoutTreeView_DrawNode(object sender, DrawTreeNodeEventArgs e)
{
    e.DefaultDraw = true;
}

... acontece o mesmo, o que é estranho, já que o Windows está desenhando agora. Esse comportamento está no Windows XP com .Net 3.5.

Existe alguma maneira de contornar esse comportamento estranho?

questionAnswers(1)

yourAnswerToTheQuestion