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:
PHP Code:
Public Class Form1
End Class
Da muss erstmal ein Enumerater rein.
Mit folgenden Werten:
- main = 0
- about = 1
also so:
PHP Code:
Public Enum content
main = 0
about = 1
End Enum
Nachdem der Schritt getan ist, gehts ans Verarbeiten der Daten in der Methode "changeContent"
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
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:
PHP Code:
Dim myUC As UserControl
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:
PHP Code:
Dim myUC As UserControl
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:
PHP Code:
Public Shared Event changeUC(content As Object)
Und gleich zwei weitere Fehler terminiert
Die letzten zwei Fehler kann man so in der Hauptform terminieren:
PHP Code:
Sub changeUC(content As Object)
changeContent(content)
End Sub
Und keine Fehler mehr.
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
Den zweiten belegt man wie folgt:
PHP Code:
Private Sub btn_about_Click() Handles btn_about.Click()
changeContent(Form1.content.about)
End Sub
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!
thanatos forms 08/17/2010 - Grand Chase Philippines - 20 Replies 1st formhttp://images2.wikia.nocookie.net/__cb20100528 043435/grandchase/images/7/78/ThanatosForm1.jpg2nd formhttp://images1.wikia.nocookie.net/__cb20100528 043417/grandchase/images/2/21/ThanatosForm2.jpg3rd and final formhttp://images1.wikia.nocookie.net/__cb20100528 043254/grandchase/images/2/29/ThanatosForm3.jpg
thanatos the god of damnation
press thanks you like my post
[RELEASE] I named my bot LILPROHACKER, based "Disconnect'S packet based BOT" 02/08/2010 - Shaiya Hacks, Bots, Cheats & Exploits - 6 Replies Hello guys Thats release section right???
http://img686.imageshack.us/img686/8051/fuckthate .jpg
Shaiya Packet Bot By lilprohacker - G-R - Your Gaming Community
DLL error, but its not my problem i did it just for show people what is dll error.
Solution: Put "pipeClient.dll" and "packet.dll" to Shaiya Packet Bot v1023 folder
http://img707.imageshack.us/img707/4519/fuckthat. jpg
C# forms... silly question, lol 12/30/2008 - CO2 Programming - 4 Replies I know that this is nooby, but I can`t find it anywhere. My C# form has a menustrip, a statustrip and a webbrowser in it. How can I make it so when I stretch the form, everything moves, not just the size of the form?
epvp revealed in co forms 03/17/2006 - Conquer Online 2 - 30 Replies Looks like people are going to start findin out about this site alot more maybe co will start cracking down on ppl
http://bbs.conqueronline.com/showthread.ph...& ;highlight=EPVP