Laden...

TAB Control für Main APP

Erstellt von SatMAX vor 18 Jahren Letzter Beitrag vor 18 Jahren 2.742 Views
S
SatMAX Themenstarter:in
21 Beiträge seit 2006
vor 18 Jahren
TAB Control für Main APP

Hallo!

System: .NET 2.0 C#2.0 (VS 2005)

Ich möchte eine MDI APP erstellen. Wenn der Anwender nun ein Fenster öffnet, möchte ich am unteren Bildschirmrand einen TAB-Reiter haben wo alle offenen Fenster eingetragen sind und der Anwender einfach zwischen den Fenstern wechseln kann. Ist das mit dem Standard TAB-Control möglich, gibt es dafür eventuell wo ein Beispiel? Ich bin ein Neueinsteiger was C# und Windows anbelangt.

Danke
Markus

1.271 Beiträge seit 2005
vor 18 Jahren

Für sowas musst du bei Codeproject schauen: Suchergebnisse für "mdi tab".

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

S
SatMAX Themenstarter:in
21 Beiträge seit 2006
vor 18 Jahren

Danke für den Link, leider habe ich nur Beispiele für .NET 1.x gefunden, nichts für .Net 2.x und VS 2005

Gruß
Markus

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo SatMAX,

in der Regel lassen sich 1.1 Beispiele (zumindest nach einer Neuübersetzung, aber eigentlich auch so) auch unter 2.0 verwenden.

herbivore

T
38 Beiträge seit 2006
vor 18 Jahren

Normalerweise MUSS jede API abwertskompatibel sein. D.h. alle 1.1 Beispiele müssen auch unter 2.0 laufen.

S
SatMAX Themenstarter:in
21 Beiträge seit 2006
vor 18 Jahren

Ich hab es fast. 🙂. LEider hänge ich bei einem Problem. 🙁

Beispiel:

Ich erstelle ein neues Fenster mit:

MDIChild childForm = new MDIChild();

Dann wird der event handler aufgerufen:

private void tabControl1_SelectedIndexChanged(object sender, System.EventArgs e)

    {  

foreach (MDIChild childForm in this.MdiChildren)
{
//Check for its corresponding MDI child form
if (childForm.TabPag.Equals(tabControl1.SelectedTab))
{
//Activate the MDI child form
childForm.Select();
}
}

KLappt so weit ganz gut. Nun erstelle ich aber ein Fesnter mit:

auftrag childForm = new auftrag();

Jetzt funktioniert der Eventhandler nicht mehr, der müsste geändert werden auf:

foreach (auftrag childForm in this.MdiChildren)

Leider habe ich keine Ahnung, wie ich diese Zeile so gestalte, das verschiedene Forms akzeptiert werden. also einmal

MDIChild childForm = new MDIChild();

und dann

auftrag childForm = new auftrag();

Wobei das sicher an die 20 verschiedene werden.

Gruß
Markus

1.271 Beiträge seit 2005
vor 18 Jahren

Wie wärs, wenn du einfach von Form ausgehst? Weil alle Fenster sind ja von Form abgeleitet, d.h du schreibst es einfach so:

foreach (Form childForm in this.MdiChildren)

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

S
SatMAX Themenstarter:in
21 Beiträge seit 2006
vor 18 Jahren

Da fehlt mir "childForm.TabPag", brauche ich da einen Zwischenklasse?

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo SatMAX,

nein, childForm muss nur vom richtigen Typ sein. Der statische Typ entscheidet darüber, welche Member zur Verfügung stehen. Ggf. musst du auf den entsprechenden Typ casten (Cast, is, as).

herbivore

S
SatMAX Themenstarter:in
21 Beiträge seit 2006
vor 18 Jahren

Hallo herbivor

>> auf den entsprechenden Typ casten (Cast, is, as).
Das ist ja mein Problem, ich habe natürlich verschiedene Forms.

Aber, egal, ich hab es. Einfach eine Zwischenklasee (meine erste. 🙂 ), die macht nun alles. Habe C# erst diese Woche bekommen, und auch unter Windows habe ich noch nie programmiert, bin eigentlich überrascht dass ich das in so kurzer Zeit hinbekommen habe. Codeprojekt und das Forum waren natürlich eine Große Hilfe.

Danke nochmals.