Da ich mir gedacht habe, dies könnte hilfreich für einige Programme hier in e*pvp sein, gibts
heute ein Tutorial wie man ganz einfach eine "UserControl-based-Form" macht.
Was ist das überhaupt?
Eine "UserControl-based-Form" ist eine Anwendung, die auf MDI, Tabs und mehrere Forms verzichtet.
Sie ist ungefähr wie Tabs, verhält sich aber wie eine normale Anwendung mit Forms, da die Forms unabhängig sind und nicht, wie bei Tabs auf das Hauptfenster angewiesen sind.
Ich persönlich bevorzuge diese Technik, weil es die Probleme mit Tabs und mehreren Forms aus dem Weg schafft.
Ich hoffe, das ist gut erklärt.
Was man dafür braucht:
1 Form
x Buttons
1 Panel
Vorbereitung:
Erstelle eine Windows Forms Anwendung
Ziehe zwei Buttons auf die Form und platziere sie unter der Titelleiste ( Name: Hauptmenü, Über )
Nimm ein Panel und breite es über die ganze Form ( ausgenommen der Buttons ) aus
Gebe dem Panel folgende Eigenschaften:
- Anchor=Top, Left, Right, Bottom
Öffne das Codefenster mit F7
Okay...das wäre fertig. Die Form ist eingerichtet.
Der etwas knifflige Schritt bei dem ganzen, ist die Übersicht, da der Code schnell über mehrere hundert Zeilen lang werden kann auf der Hauptform.
Aber das soll ja nicht stören, also ignorieren.
Am anfang sieht die Form folgendermaßen im Code aus:
Da muss erstmal ein Enumerater rein.
Mit folgenden Werten:
- main = 0
- about = 1
also so:
Nachdem der Schritt getan ist, gehts ans Verarbeiten der Daten in der Methode "changeContent"
Ich hoffe die Kommentare sind einleuchtend, weil ich nicht so gut erklären kann
Hier wird der Editor einige Fehler werfen, was nicht stören soll, kommt alles noch.
Was auffält, es wird immer myUC benutzt, aber nirgendwo deklariert.
Also:
Ich hoffe die Kommentare sind einleuchtend, weil ich nicht so gut erklären kann
Hier wird der Editor einige Fehler werfen, was nicht stören soll, kommt alles noch.
Was auffält, es wird immer myUC benutzt, aber nirgendwo deklariert.
Also:
fertig
Das wäre schonmal der erste Fehler.
Jetzt müssen die UserControls angelegt werden.
Dafür einfach ein neues BenutzerSteuerelement zum Projekt hinzufügen und "uc_main" nennen.
Gleich ein zweites dazu und das wird "uc_about" genannt, und schon sind nurnoch vier Fehler drin.
Die auch sogleich behoben werden.
In der Codeansicht von uc_main schreibt man folgendes rein:
Und gleich zwei weitere Fehler terminiert
Die letzten zwei Fehler kann man so in der Hauptform terminieren:
Und keine Fehler mehr.
Nun werden die Buttons belegt.
Der erste mit "Hauptmenü" muss so belegt werden:
Den zweiten belegt man wie folgt:
und voilà :P , da ist das Programm, dass keine zweiten Forms braucht, keine Tabs und viel schöner ist.
Der Code kann natürlich mit zehntausend verschiedenen Möglichkeiten verbessert, erweitert, auf persönliche Bedürfnisse angepasst werden,
aber dies ist nur der Grundstein, deswegen: tu was immer du willst mit dem Code solange du ihn nicht unter deinem Namen verteilst,
ohne meine Einwilligung irgendwo Veröffentlichst und auch nicht verkaufst.
Ich hoffe, dieses Tutorial hat irgendwo einen Sinn, denn sonst wäre die Arbeit umsonst gewesen.
Im Anhang das Beispielprojekt. Natürlich Option Strict On!
Fragen bitte hier posten und nicht per PN
Credits:
_Eckl ~ Me
AliveDevil ~ Tester
heute ein Tutorial wie man ganz einfach eine "UserControl-based-Form" macht.
Was ist das überhaupt?
Eine "UserControl-based-Form" ist eine Anwendung, die auf MDI, Tabs und mehrere Forms verzichtet.
Sie ist ungefähr wie Tabs, verhält sich aber wie eine normale Anwendung mit Forms, da die Forms unabhängig sind und nicht, wie bei Tabs auf das Hauptfenster angewiesen sind.
Ich persönlich bevorzuge diese Technik, weil es die Probleme mit Tabs und mehreren Forms aus dem Weg schafft.
Ich hoffe, das ist gut erklärt.
Was man dafür braucht:
1 Form
x Buttons
1 Panel
Vorbereitung:
Erstelle eine Windows Forms Anwendung
Ziehe zwei Buttons auf die Form und platziere sie unter der Titelleiste ( Name: Hauptmenü, Über )
Nimm ein Panel und breite es über die ganze Form ( ausgenommen der Buttons ) aus
Gebe dem Panel folgende Eigenschaften:
- Anchor=Top, Left, Right, Bottom
Öffne das Codefenster mit F7
Okay...das wäre fertig. Die Form ist eingerichtet.
Der etwas knifflige Schritt bei dem ganzen, ist die Übersicht, da der Code schnell über mehrere hundert Zeilen lang werden kann auf der Hauptform.
Aber das soll ja nicht stören, also ignorieren.
Am anfang sieht die Form folgendermaßen im Code aus:
PHP Code:
Public Class Form1
End Class
Mit folgenden Werten:
- main = 0
- about = 1
also so:
PHP Code:
Public Enum content
main = 0
about = 1
End Enum
PHP Code:
Sub changeContent(ByVal content As content)
If Not myUC Is Nothing Then ' wenn nicht myUC Nichts
Select Case myUC.Name
Case "uc_main" ' wenn myUC.Name = "uc_main"
RemoveHandler uc_main.changeUC, AddressOf changeUC ' lösche den Handler von uc_main auf changeUC
End Select
End If
Select Case content
Case Form1.content.main ' wenn content = content.main
myUC = New uc_main ' erstelle neues UserControl von uc_about
myUC.Name = "uc_main" ' setze Namen
AddHandler uc_main.changeUC, AddressOf changeUC ' erstelle Handler changeUC
Case Form1.content.about ' wenn content = content.about
myUC = New uc_about ' erstelle neues UserControl von uc_about
myUC.Name = "uc_about" ' Namen setzen
End Select
mainContent.Controls.Clear() ' mainContent ist das Panel
If myUC IsNot Nothing
myUC.Dock = DockStyle.Fill ' fülle das Panel mit dem UserControl aus
mainContent.Controls.Add(myUC) ' füge myUC dem mainContent hinzu
End If
End Sub
Hier wird der Editor einige Fehler werfen, was nicht stören soll, kommt alles noch.
Was auffält, es wird immer myUC benutzt, aber nirgendwo deklariert.
Also:
PHP Code:
Dim myUC As UserControl
Hier wird der Editor einige Fehler werfen, was nicht stören soll, kommt alles noch.
Was auffält, es wird immer myUC benutzt, aber nirgendwo deklariert.
Also:
PHP Code:
Dim myUC As UserControl
Das wäre schonmal der erste Fehler.
Jetzt müssen die UserControls angelegt werden.
Dafür einfach ein neues BenutzerSteuerelement zum Projekt hinzufügen und "uc_main" nennen.
Gleich ein zweites dazu und das wird "uc_about" genannt, und schon sind nurnoch vier Fehler drin.
Die auch sogleich behoben werden.
In der Codeansicht von uc_main schreibt man folgendes rein:
PHP Code:
Public Shared Event changeUC(content As Object)
Die letzten zwei Fehler kann man so in der Hauptform terminieren:
PHP Code:
Sub changeUC(content As Object)
changeContent(content)
End Sub
Nun werden die Buttons belegt.
Der erste mit "Hauptmenü" muss so belegt werden:
PHP Code:
Private Sub btn_mainmenu_Click() Handles btn_mainmenu.Click()
changeContent(Form1.content.main)
End Sub
PHP Code:
Private Sub btn_about_Click() Handles btn_about.Click()
changeContent(Form1.content.about)
End Sub
Der Code kann natürlich mit zehntausend verschiedenen Möglichkeiten verbessert, erweitert, auf persönliche Bedürfnisse angepasst werden,
aber dies ist nur der Grundstein, deswegen: tu was immer du willst mit dem Code solange du ihn nicht unter deinem Namen verteilst,
ohne meine Einwilligung irgendwo Veröffentlichst und auch nicht verkaufst.
Ich hoffe, dieses Tutorial hat irgendwo einen Sinn, denn sonst wäre die Arbeit umsonst gewesen.
Im Anhang das Beispielprojekt. Natürlich Option Strict On!
Fragen bitte hier posten und nicht per PN
Credits:
_Eckl ~ Me
AliveDevil ~ Tester






