Entwickler-Ecke

Programmierwerkzeuge - Wie kleinere Projekte in Visual C# Express weiterverwenden?


Hegmeg - Mi 22.07.09 22:17
Titel: Wie kleinere Projekte in Visual C# Express weiterverwenden?
Hallo,

ich bin Anfänger und habe mal wieder Fragen. Vielleicht muten diese Fragen seltsam an, aber ich komme einfach nicht weiter.

Hintergrund:
Und zwar habe ich mir einige kleine Sachen zum C#-Üben programmiert. Die Projekte sind in Büchern oder Foren zu finden. Dort beschäftigt man sich immer mit dem Einzelprojekt, aber es wird nie darüber geredet wie man das weiterverwendet.
Es geht mir darum, wie man kleinere Projekte in Microsoft Visual C# Express Edition in anderen Projekten wieder verwendet. Oder selbsterstellte Klassen die mit der IDE verflochten sind.

Frage 1:
Ich habe z.B. ein Projekt, wo man auf einem Form in eine Textbox ein Verzeichnis eingeben kann, welches dann nach Programmende über settings.settings gespeichert wird und beim erneuten Programmstart steht das letzte eingegebene Verzeichnis wieder in der Textbox.
Wenn ich nun das Form als Panel in einem anderen Projekt wiederverwenden möchte, müsste ich da das ganze Projekt in ein neues laden? Weil dann habe ich ja zwei Hauptformulare und das beißt sich mit den Settings.

Frage 2:
Das Hauptproblem was ich habe ist folgendes:
Wenn ich etwas mit Events programmiere, dann füge ich mir die Events über die Eigenschaftsliste links unten ein. Die IDE generiert mir dann den Eventhandler in z.B. InitializeComponents. Wenn ich eine eigene Klasse geschrieben habe, die mit dem Eventhandler zu schaffen hat, und ich möchte diese weiterverwenden, wie mache ich das mit dem Eventhandler?
Anders gefragt: Wie kann ich den Eventhandler (z.B. Mouseover) in meine Klasse (enthält alles, nur kein Form) umsiedeln, so dass ich nur die Klasse in ein anderes Projekt funktionsfähig einbinden kann und nicht das ganze Projekt?

Ich hoffe die Fragen sind nicht zu blöde :)

Vielen Dank im voraus!


MoBBer - Do 23.07.09 10:20

Hallo Hegmeg,

Frage1:

eine Form kann man nicht in einem Panel anzeigen, eine Form ist immer ein eigenes Fenster. Du kannst dir aber einfach eine TextBox erstellen und dann den verarbeitenden Code kopieren oder als Klasse einfügen, wie bei Frage 2, dass erklär ich jetzt.

Frage 2:

Form1

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        //Objekt von Class1 um auf Methoden von Class1 zugreifen zu können
        Class1 c1 = new Class1();
        public Form1()
        {
            InitializeComponent();
            //dem Click Event des Buttons auf dieser Form den EventHandler aus der anderen Klasse zuweisen über, dass Objekt
            this.button1.Click = c1.Click_Eventhandler(); 
        }
    }
}


Class1

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
namespace WindowsFormsApplication1
{
    class Class1
    {
        //Das Event welches ausgelagert ist und so "portable" ist
        public void Click_Eventhandler(object sender, EventArgs e)
        {
            //...Click verarbeiten
        }
    }
}


Wenn du nun die Klasse importierst solltest du sie dem restlichen namespace anpassen, da du die Klasse sonst nicht siehst oder eine Directive einfügen musst. Danach legst in der Form wie oben beschrieben erstmal ein Objekt an und registriest über dieses Objekt das EventHandle. Events registrierst du immer mit "+=" und entfernst sie mit "-=".


Th69 - Fr 24.07.09 11:08

Als Ergänzung noch:

Wenn du eigene GUI-Komponenten entwickelt hast (z.B. deine beschriebene Textbox inklusive Event-Handler), dann kannst du dafür auch ein UserControl (Benutzersteuerelement) erstellen (Neue Datei -> Benutzersteuerelement).

Diese können dann bequem als ganzes auf eine neue Form (mittels der VS-ToolBox) gezogen werden (sogar mehrfach nutzbar).


Hegmeg - Sa 01.08.09 14:06

Ich habe jetzt die Tipps umgesetzt bzw. angewendet. Ihr habt mir sehr geholfen, vielen Dank.