Hallo Lieber C#ler,
mein Projekt wird immer größer und ich brauche ein Menü links am Rand, ähnlich wie auf dem Bild. Wenn ich nach Menü C# oder ähnliches google finde ich nix gescheites. Jemand eine Idee wie ich ein solches Menü hinbekomme?
Vielen Dank
Manuel
Vielen Dank für die schnelle Hilfe Bhaal,
gibt es auch eine "einfache" Lösung die ich schnell in mein Projekt einfügen kann? Mit würde es reichen wenn ich bei einem TabControl die Buttons übereinander anordnen und die Schrift Waagerecht mit kleinem Bild anzeigen könnte.
Liebe Grüße
Manuel
Wenn dir der CodeProject Artikel nicht gefällt, kannst du auch mit einem TabControl arbeiten, die Tabs ausblenden, und unten drunter über normale Buttons (per TabControl.SelectTab) dafür sorgen, dass jeweils die passenden Items angezeigt werden.
...die Frage ist halt eher, warum selber bauen?
Nun, die Lösung von Codeprojekt sieht sehr gut aus, aber leider lässt sich Guifreaks nicht in meinem Visual Studio 2013 installieren. Laut Setup nur bis VS2010. 😦
Und da ich leider noch anfänger bin, traue ich mir nicht zu alles per Hand einzufügen.
Hallo Maffi1986,
Mit würde es reichen wenn ich bei einem TabControl die Buttons übereinander anordnen und die Schrift Waagerecht mit kleinem Bild anzeigen könnte.
das Standard-TabControl kann das meines Wissens nicht, aber es gibt sicher TabControls im Netz, die das können.
Allerdings würde ich es nicht als "das Rad neu erfinden" ansehen, wenn die Darstellung der Navigation und das Darstellen der passenden Seite nicht in einem Control gekapselt sind. Wenn man es trennt, ist man weniger darauf angewiesen, genau das eine Control zu finden, das den eigenen Wünschen entspricht. In [FAQ] Assistenten/Wizards: Mit Windows Forms eine Art Frameset einer Website nachbauen steht, wie man Navigation und Umblättern aus zwei oder mehr einzelnen Controls zusammenbaut. Da sowieso fast jede Oberfläche aus mehreren zusammenarbeitenden Controls aufgebaut ist, ist das also ganz normal und kein unnötiges "selber bauen".
BTW: Wir gehen nach [Hinweis] Wie poste ich richtig? Punkt 1.1.1 davon aus, dass das man das Einbinden von Dritt-Komponenten selbst in den Griff bekommt. Daher bitte keine Fragen dazu.
herbivore
Erstmal vielen Dank für die Hilfe,
ich habe eine einfache Lösung gefunden. Für alle die auch nach etwas einfachem suchen hier der Link aus dem
C# TabControl
Allerdings habe ich das Problem, das ich die Farbe vom TabControl nicht ändern kann. Mein Projekt ist in einem schlichtem Weiß gehalten, und das TabControl hat als Hintergrund die Control Farbe. Nach kurzem googlen habe ich den Beitrag Farbe von TabControl ändern? gefunden, geht das nicht kürzer? Ich muss "nur" den Hintergrund ändern.
Liebe Grüße
Manuel
Wenn ich dich richtig verstehe, willst du den grauen Bereich unterhalb von "Demo" auf weiß bekommen, oder? Das Standard TabControl
kann sowas nicht; du kannst aber einfach von TabControl ableiten und in OnPaintBackground
bzw. OnPaint
den Hintergrund selber malen (Hint: graphics.Clear(...)
).
Was die Frage nach dem Hintergrund angeht, ist diese eigentlich nicht nur ausreichend in dem anderen Thread behandelt, sondern in diesem Thread hier auch nicht Thema, siehe [Hinweis] Wie poste ich richtig? Punkt 1.2. Sollte tatsächlich Bedarf bestehen, weiter im anderen Thread.
Oder einmal ganz anders gedacht, erstell dir UserControl mit nem Bild und Schrift und hau es in ein FlowLayoutPannel(oderso) rein.
Hallo Robin0, hallo zusammen,
ein UserControl mit einem Bild (möglicherweise per PictureBox) und einem Text (möglicherweise per Label) wären schon drei Controls pro Eintrag. Eine Navigationsliste würde zwar vermutlich eine begrenzte Anzahl von Einträgen haben, aber trotzdem würden damit potenziell unnötig viele Controls verbraten, von denen ein Form nicht mehr als 100 enthalten sollte (siehe dazu z.B. Maximale Anzahl an SubControl-Ebenen? [==> Keine harte Beschränkung aber Performance-Problem drohen]). Bei 10 Einträgen in einem solchen Control wären schon 30 Controls verbraten.
Generell sollte man ein FlowLayoutPanel nicht dazu missbrauchen, Listen zu realisieren. Laut Doku, ist ein FlowLayoutPanel sinngemäß dazu da, seinen "Inhalt auf dynamische Weise horizontal oder vertikal anzuordnen" und damit "Layouts zu erstellen, die sich zur Laufzeit an die Dimensionen des Formulars anpassen". Es ist also ein dynamisches Panel und kein Listencontrol.
Für ein Listencontrol mit Bildern, das man leicht um die Anzeige eines Textes pro Bild erweitern kann, siehe ImageListBox.
herbivore