2016-03-20 9 views
0

schweben. Als Beispiel: Ich habe in meiner Baumansicht IDs für Mitarbeiter. Wenn ich den Mauszeiger über eine bestimmte ID halte, möchte ich einen Tooltip anzeigen, der den Namen des Arbeitgebers (aus meiner Datenbank) enthält. Ich möchte also den Gegenstand, der darüber schwebt, halten.Wie kann Knoten in der Baumansicht halten, wenn ich es in C# Windows-Formular

+0

Eine einfache Möglichkeit besteht darin, die ToolTips der Knoten beim Füllen der TreeView zu füllen. Auf diese Weise müssen Sie nicht die Reise zum DBMS die ganze Zeit machen. – TaW

+0

ich war nicht meine, wie full tree Ansicht Knoten ich meine nur, wie Tool-Tipp für Knoten zeigen, wenn ich auf diesem Knoten schweben Irgendwie weiß ich die Antwort gerade jetzt kann ich den Knoten halten, wenn die Maus über es durch bewegen Event-Handler zum Beispiel (e.node) in Maus Hover-Ereignis Vielen Dank für Ihre interessiert –

+0

Nun, es gibt Knoten dort, richtig? Hast du also beim Erstellen eines Videos nicht bereits die Informationen, die du im Tooltip anzeigen möchtest? Wenn nicht, müssen Sie die Abfrage durchführen. Aber wie können wir da helfen, nichts über Ihre Daten wissen oder wie Sie die Knoten erstellen ??? – TaW

Antwort

0

Wenn Sie Tooltip Zeichenfolgen zu Ihren Knoten hinzugefügt haben, werden diese angezeigt, wenn der Benutzer über Node schwebt.

Dazu Sie (oder den Benutzer, wenn Sie ihm diese Option geben) arbeiten auf der TreeView.ShowNodeToolTip Eigenschaft drehen müssen:

treeView1.Nodes.Add("Knoten0"); 
TreeNode n = treeView1.Nodes[0].Nodes.Add("Knoten1"); 
n.ToolTipText = "T'm a ToolTip :-)"; 
//.. 
treeView1.ShowNodeToolTip = true;  // <<----- 

enter image description here

Ich schlage vor, die Anwender diese deaktivieren prüfen lassen wieder, wie es oft den normalen Gebrauch des Baumes stört ..

0

das, was ich meinte, dies ist die Antwort für meine Frage Methode zeigen Tool-Tipp aus der Datenbank * wenn ich Maus auf spe schweben die Lösung fill Tooltips für alle Knoten cific Knoten * zeigen Werkzeugspitze nur für diesen Knoten

public void showTipsTree(TreeView treeView1, TreeNodeMouseHoverEventArgs e, 
       int imageindex, string tooltipField, string nameTable, string orginalField) 
    { 
     treeView1.ShowNodeToolTips = true; 
     if (e.Node.SelectedImageIndex == imageindex) 
     { 
      string q = e.Node.ToString(); 
      SqlConnection conn = new SqlConnection(Connection1.x); 
      conn.Open(); 
      string[] a = q.Split(); 
      SqlCommand cmd = new SqlCommand(String.Format(
    "select {1} from {2} where {3}={0}", a[1],tooltipField,nameTable,orginalField), conn); 
      e.Node.ToolTipText = cmd.ExecuteScalar().ToString(); 
      conn.Close(); 
     } 

    } 
+0

Eine QuickInfo wird __alls__ für einen bestimmten Knoten angezeigt, wenn Sie eine festgelegt haben. Die Art, wie Sie es tun, bedeutet jetzt __repeately__ Gehen Sie zu den dbms für ein Stück Daten, die Sie nur __once__ abrufen müssen. Schlechte Lösung! – TaW

+0

also was ist die beste Lösung Ihrer Meinung nach für diese Situation –

+0

Was ich dir in meinem ersten Kommentar gesagt habe: Füllen Sie die Daten, wenn Sie die Knoten erstellen! Lesen Sie alle Anweisungen in __one__ 'select' ein und richten Sie die Knoten so ein, dass sie den gewünschten Text und die gewünschte QuickInfo enthalten. Nach dem Treeview sind keine weiteren Fahrten zur db! – TaW

0

ich besser, Anspiel Reisen für db je Maus schweben gehen Antwort, wenn ich tun, bestimmte Sache wie klicken Sie auf Refresh-Button wie Methode:

 static public void showTipsTree(TreeView treeView1, string tooltipField_toMainNodes, string nameTable_toMainNodes, string orginalField_toMainNodes, string tooltipField_toSubNodes, string nameTable_toSubNodes, string orginalField_toSubNodes) 
    { 
     treeView1.ShowNodeToolTips = true; 
     SqlConnection conn = new SqlConnection(Connection1.x); 
     conn.Open(); 
     for (int i = 0; i < treeView1.Nodes.Count; i++) 
     { 
      string[] a = treeView1.Nodes[i].ToString().Split(); 
      SqlCommand cmd = new SqlCommand(String.Format("select {0} from {1} where {2}={3}", tooltipField_toMainNodes, nameTable_toMainNodes, orginalField_toMainNodes, a[1]), conn); 
      treeView1.Nodes[i].ToolTipText = cmd.ExecuteScalar().ToString(); 
      for (int j = 0; j < treeView1.Nodes[i].Nodes.Count; j++) 
      { 
       string[] a2 = treeView1.Nodes[i].Nodes[j].ToString().Split(); 
       SqlCommand cmd2 = new SqlCommand(String.Format("select {0} from {1} where {2}={3}", tooltipField_toSubNodes, nameTable_toSubNodes, orginalField_toSubNodes, a2[1]), conn); 
       treeView1.Nodes[i].Nodes[j].ToolTipText = cmd2.ExecuteScalar().ToString(); 
      } 
     } 
     conn.Close(); 
    } 
Verwandte Themen