2012-12-11 1 views
1

나는 TreeView이고 각각은 Node.Text에 두 단어가 있습니다. 첫 번째 단어와 두 번째 단어의 색상이 달라야합니다. 나는 이미 DrawMode 속성과 DrawNode 이벤트를 사용하여 텍스트 색상을 변경하고 있지만 두 가지 색상으로 Node.Text을 분할하는 방법을 알 수는 없습니다. 누군가 내가 TextRenderer.MeasureText를 사용할 수 있다고 지적했으나 나는 그것을 사용하는 방법/방법이 없다.Treenode 텍스트가 다른 색깔의 단어

누군가가 아이디어가 있습니까?


코드 :

formload() 
{ 
    treeView1.DrawMode = TreeViewDrawMode.OwnerDrawText; 
} 

private void treeView1_DrawNode(object sender, DrawTreeNodeEventArgs e) 
{ 
Color nodeColor = Color.Red; 
if ((e.State & TreeNodeStates.Selected) != 0) 
    nodeColor = SystemColors.HighlightText; 

TextRenderer.DrawText(e.Graphics, 
        e.Node.Text, 
        e.Node.NodeFont, 
        e.Bounds, 
        nodeColor, 
        Color.Empty, 
        TextFormatFlags.VerticalCenter); 
} 
+0

코드를 설명해 주시겠습니까? –

+0

winforms에서는 가능하지 않습니다. 이미지를 사용해야합니다. – MrFox

+0

@MrFox 불가능합니다. – phadaphunk

답변

6

이 시도 :

private void treeView1_DrawNode(object sender, DrawTreeNodeEventArgs e) 
    { 
     string[] texts = e.Node.Text.Split(); 
     using (Font font = new Font(this.Font, FontStyle.Regular)) 
     { 
      using (Brush brush = new SolidBrush(Color.Red)) 
      { 
       e.Graphics.DrawString(texts[0], font, brush, e.Bounds.Left, e.Bounds.Top); 
      } 

      using (Brush brush = new SolidBrush(Color.Blue)) 
      { 
       SizeF s = e.Graphics.MeasureString(texts[0], font); 
       e.Graphics.DrawString(texts[1], font, brush, e.Bounds.Left + (int)s.Width, e.Bounds.Top); 
      } 
     } 
    } 

당신은 충당 작업을 수행하는 노드의 State을 관리해야합니다.

UPDATE

죄송합니다, 내 실수는 업데이트 된 버전을 참조하십시오. 공간 크기는 이미 texts[0]에 들어 있으므로 측정 할 필요가 없습니다.

+0

Genius를 추가했습니다 !! 전체 텍스트를 강조 표시하지 않는 강조 표시에는 약간의 문제가 있습니다. 하지만이 문제를 해결하는 방법을 알아낼 것입니다. 한 가지 더. 거기에 하나의 단어가있는 노드를 잡을 수있는 방법이 있습니까? (마지막 줄에서 프로그램을 중단합니다.) 드문 일이지만 가능한 결과이기 때문입니다. – phadaphunk

+0

프로그램을 사용해 보았는데 어쩌면이 결함 (다른 질문으로 게시 됨)이 발생했습니다. 저는 일주일 전에 저에게 준 솔루션과 비슷한 것을 구현했으며 노드가 올바른 위치에 그려지지 않는 그래픽 결함이있었습니다. 그래서 오늘 다시 물었습니다. 그러나 결함은 여전히 ​​여기에 있습니다. – phadaphunk

+0

질문은 여기에 있습니다. http://stackoverflow.com/questions/13825167/multicolor-treeview-draw-glitch – phadaphunk