Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding > Coding Tutorials
You last visited: Today at 01:46

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[VB.NET] UserControl-based-Forms

Discussion on [VB.NET] UserControl-based-Forms within the Coding Tutorials forum part of the General Coding category.

Reply
 
Old   #1
 
elite*gold: 32
Join Date: Oct 2010
Posts: 250
Received Thanks: 75
Talking [VB.NET] UserControl-based-Forms

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.changeUCAddressOf 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
.changeUCAddressOf 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!

Fragen bitte hier posten und nicht per PN

Credits:
_Eckl ~ Me
AliveDevil ~ Tester
Attached Files
File Type: rar WindowsApplication2.rar (71.9 KB, 14 views)
_Eckl is offline  
Thanks
2 Users
Reply


Similar Threads Similar Threads
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



All times are GMT +2. The time now is 01:47.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.