Laden...

Treeview transparent?!

Erstellt von ZeroQool vor 16 Jahren Letzter Beitrag vor 16 Jahren 2.942 Views
Z
ZeroQool Themenstarter:in
322 Beiträge seit 2006
vor 16 Jahren
Treeview transparent?!

Hallo, habe die Hilfe u bereits googelt durchsucht, aber nicht das richtig passende gefunden. Ich möchte ein Treeview transparent machen, weil ich unter dem TV ein panel mit einem Backgroundimage habe.

Fehlermeldung: "Das Steuerelement unterstützt keine transparenten Hintergrundfarben."

Es muss doch sicherlich noch einen anderen Weg geben...thx im voraus

5.742 Beiträge seit 2007
vor 16 Jahren

Hallo,
so viel ich weiß, funktioniert das nur mit einer einfachen Ableitung:


public class TransparentTreeView : TreeView
{
   public TransparentTreeView()
      : base()
   {
      this.SetStyle(ControlStyles.SupportsTransparentBackColor | ControlStyles.UserPaint, true);
   }
}

Dann sollte


transparentTreeView1.BackColor = Color.Transparent;

einwandfrei funktionieren.

Z
ZeroQool Themenstarter:in
322 Beiträge seit 2006
vor 16 Jahren

Danke für den Tip. Ist das egal, wo ich die abgeleitete Klasse einbaue? Tue mich da noch etwas schwer...Wie bewerkstellige ich das meine Komponente TreeView auf die abgeleitete zugreift?

Habe es zB jetzt so gemacht:


    public class TransparentTreeView : TreeView
    {
      public TransparentTreeView()
        : base()
      {
        this.SetStyle(ControlStyles.SupportsTransparentBackColor | ControlStyles.UserPaint, true);
      }
    }

    private void SubForm_Load(object sender, EventArgs e)
    {
      TransparentTreeView tr = new TransparentTreeView();
      tr.Location = new Point(0, 0);
      tr.Size = this.ClientSize;
      tr.Nodes.Add("Erde");
      TreeNode[] nodesErde = new TreeNode[] { new TreeNode("Amerika"), new TreeNode("Asien"), new TreeNode("Afrika"), new TreeNode("Australien"), new TreeNode("Europa") };
      tr.Nodes[0].Nodes.AddRange(nodesErde);
      // Element 'Europa' ergänzen  
      TreeNode europa = tr.Nodes[0].Nodes[4];
      europa.Nodes.Add("England");
      europa.Nodes.Add("Frankreich");
      europa.Nodes.Add("Deutschland");
      europa.Nodes.Add("Italien");
      // Element 'Deutschland' ergänzen  
      TreeNode deutschland = europa.Nodes[2];
      deutschland.Nodes.Add("Bonn");
      deutschland.Nodes.Add("Aachen");
      deutschland.Nodes.Add("Hamburg");
      deutschland.Nodes.Add("Berlin");
      // Element 'Amerika' ergänzen  
      TreeNode amerika = tr.Nodes[0].Nodes[0];
      amerika.Nodes.Add("USA");
      amerika.Nodes.Add("Kanada");
      amerika.Nodes.Add("Mexiko");
      // Element 'USA' ergänzen  
      TreeNode usa = amerika.Nodes[0];
      usa.Nodes.Add("Miami");
      usa.Nodes.Add("New York");
      usa.Nodes.Add("San Francisco");
      usa.Nodes.Add("Seattle");


      this.Controls.Add(tr);
      tr.BackColor = Color.Transparent;

    }

Der Rahmen für das TreeView wird angezeigt. Ist auch transparent, aber ich seh meinen Baum nicht.