2008-10-02 3 views
3

툴팁을 사용하여 TreeNode에 대한 자세한 설명을 표시 할 때 툴팁은 노드 텍스트를 완성하는 것처럼 노드 상단에 그려집니다. 또한 텍스트가 길면 텍스트가 화면을 초과하는 방식으로 툴팁이 배치됩니다.TreeView에서 도구 설명 위치를 변경하는 방법?

하지만 필요한 것은 도구 설명이 마우스 포인터 바로 아래에 표시되고 TreeNode 상단에는 표시되지 않습니다.

어떻게하면 좋을까요?


쇼, 말하지 마 :

을 얼마나 :

how it is http://images6.theimagehosting.com/tooltip2.th.PNG

내가 원하는 방법 :

how I want http://images6.theimagehosting.com/tooltip3.th.PNG

답변

2

당신은 도구 설명을 정의해야 TreeVie에 대한 MouseOverEventHandler를 작성합니다. w. MouseOverEventHandler에서 마우스가 위의 노드를 계산 한 다음 ToolTip 설명을 표시합니다. 또한 툴팁 설명을 두 번 이상 설정하지 않았는지 확인하십시오. 그렇지 않으면 동작이 꽤 추합니다.

더 나은 방법은 StatusStrip에 설명을 표시하는 것입니다. Form의 왼쪽 아래에 있습니다.

업데이트 : 당신이 당신의 질문을 명확히 이후

확인을 클릭합니다. 당신이 좌표를 지정할 수있는 당신은 ToolTip.Show 방법을 사용할 수 있습니다 :

public void Show(
    string text, 
    IWin32Window window, 
    int x, 
    int y, 
    int duration 
) 

물론, 당신은 x와 y 오프셋 추가해야 할 것입니다.

+0

정말로 원하는 것은 아닙니다. 실제로 이미 (각 노드의 MonseMove에 툴팁 텍스트를 설정하여)이 작업을 수행합니다. 필요한 것은 노드의 텍스트를 완성하는 것처럼 노드 위쪽에 표시되는 툴팁 양식을 방지하는 것입니다. – Jonas

7

내가 찾던 답변을 찾지 못했지만 어떻게 든 원하는대로 작동하게 만들었습니다. 지금, 나는 그냥 treeView1.ShowNodeToolTips=true

private void treeView1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) 
    { 
     TreeNode node = treeView1.GetNodeAt(e.X, e.Y); 
     if (node != null) 
     { 
       string text = GetNodeTooltip(node); 
       string currentText = toolTip1.GetToolTip(treeView1); 

       if (text.Equals(currentText) == false) 
       { 
        toolTip1.SetToolTip(treeView1, text); 
       } 
      } 
      else 
      { 
       toolTip1.SetToolTip(tree, string.Empty); 
      } 
     } 
     else 
     { 
      toolTip1.SetToolTip(tree, string.Empty); 
     } 
    } 

을 내가 모든 노드를 만들 때, 난 그냥 원하는 텍스트와의 TreeNode.ToolTipText 값을 설정 :

전에, 나는 다음과 같이 툴팁을 설정하려고했다.

3
private ToolTip toolTipController = new ToolTip() { UseFading = false,UseAnimation = false}; 

protected override void OnMouseMove(MouseEventArgs e) 
{ 
    var node = GetNodeAt(e.X, e.Y); 
    if (node != null) 
    { 
     var text = node.Text; 

     if (!text.Equals(toolTipController.GetToolTip(this))) 
     { 
      toolTipController.Show(text, this, e.Location, 2000); 
     } 
    } 
    else 
    { 
     toolTipController.RemoveAll(); 
    } 
} 
관련 문제