Laden...

Navigationsleiste im GUI realisieren (links am Rand)

Erstellt von Maffi1986 vor 10 Jahren Letzter Beitrag vor 10 Jahren 2.697 Views
Maffi1986 Themenstarter:in
53 Beiträge seit 2012
vor 10 Jahren
Navigationsleiste im GUI realisieren (links am Rand)

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

656 Beiträge seit 2008
vor 10 Jahren

Stichwort "Navigation Pane" oder "Outlook Bar", gibts unter anderem auch bei CodeProject.

Maffi1986 Themenstarter:in
53 Beiträge seit 2012
vor 10 Jahren

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

656 Beiträge seit 2008
vor 10 Jahren

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?

Maffi1986 Themenstarter:in
53 Beiträge seit 2012
vor 10 Jahren

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.

49.485 Beiträge seit 2005
vor 10 Jahren

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

Maffi1986 Themenstarter:in
53 Beiträge seit 2012
vor 10 Jahren

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

656 Beiträge seit 2008
vor 10 Jahren

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(...)).

Hinweis von herbivore vor 10 Jahren

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.

R
212 Beiträge seit 2012
vor 10 Jahren

Oder einmal ganz anders gedacht, erstell dir UserControl mit nem Bild und Schrift und hau es in ein FlowLayoutPannel(oderso) rein.

49.485 Beiträge seit 2005
vor 10 Jahren

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