Laden...

Frage zu Tab Page

Erstellt von wonderboy vor 18 Jahren Letzter Beitrag vor 18 Jahren 2.116 Views
W
wonderboy Themenstarter:in
4 Beiträge seit 2004
vor 18 Jahren
Frage zu Tab Page

Hi,

hab da mal eine Noob-Frage: ich habe in VS2003 ein TabCtrl welches mehrere komplexe gleich aussehende TabPages enthalten soll. Eigentlich bräuchte ich ein UserControl was von TabPage abgeleitet ist. Ich hab jedoch in VS2003 keine Möglichkeit dies zu tun. ENtweder kann ich ein Usercontrol erstellen oder eine Klasse von TabPage ableiten. Wie stelle ich das am besten mit VS2003 an?

Danke für eure Tipps!!!

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo wonderboy,

tja, bei der Wahl der Oberklasse muss man sich in der Tat für eine entscheiden, da es in C# keine Mehrfachvererbung gibt. Bei dieser Entscheidung gibt es m.E. nicht viel mehr zu beachten, als welche Klasse der geplanten Klasse schon am ähnlichsten ist. Das wäre m.E. im vorliegenden Fall TabPage.

herbivore

P
939 Beiträge seit 2003
vor 18 Jahren

Gleich aussehende TabPages, eine Klasse. UserControl, das viele gleich aussehende TabPages anordnet, eine zweite Klasse.

Ein UserControl, abgeleitet von TabPage, könnte ja nur eine TabPage verwalten. Wäre also eigentlich keine Option, selbst wenn es gehen würde.

Gruss
Pulpapex

W
wonderboy Themenstarter:in
4 Beiträge seit 2004
vor 18 Jahren

Vielleicht habe ich mich ja etwas unglücklich ausgedrückt. Ich möchte eine Klasse von TabPage ableiten und auf dieser dann Controls plazieren, so wie man es beim UserControl machen kann. Nur weiss ich nicht, wie das mit VS2003 geht, falls überhaupt.

cu w0nderb0y

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo Pulpapex,

nichts gegen deinen Vorschlag. Das mein Vorschlag

[...] also eigentlich keine Option [wäre]

ich denke nun nicht, denn für

mehrere komplexe gleich aussehende TabPages

braucht man ja vermutlich nur eine Klasse.

Hallo wonderboy,

dazu wie das in VS geht, kann ich leider nichts sagen. Aber im reinen Code schreibt man das Erzeugen und Hinzufügen der Untercontrols einfach in den Konstuktor der abgeleiteten Klasse.

herbivore

W
wonderboy Themenstarter:in
4 Beiträge seit 2004
vor 18 Jahren

dazu wie das in VS geht, kann ich leider nichts sagen. Aber im reinen Code schreibt man das Erzeugen und Hinzufügen der Untercontrols einfach in den Konstuktor der abgeleiteten Klasse.

herbivore

Das ich das selbst codieren kann ist mir schon klar, ich hatte nur gehofft, dass mir VS2003 die "Handarbeit" abnehmen kann. Bin halt neu in VS2003. Ich werde mal versuchen, das Usercontrol in die TabPage einzubetten, vielleicht geht das ja.

Vielen Dank auf jeden Fall aber schon mal für Eure Denkanstösse!!

cu w0nderb0y

2.921 Beiträge seit 2005
vor 18 Jahren

Meinst Du das so, das Du dann die Controls darauf im Designer platzieren könntest?

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

W
wonderboy Themenstarter:in
4 Beiträge seit 2004
vor 18 Jahren

Original von dr4g0n76
Meinst Du das so, das Du dann die Controls darauf im Designer platzieren könntest?

Ja!! Endlich jemand, der versteht, was ich möchte.

cu w0nderb0y

2.921 Beiträge seit 2005
vor 18 Jahren

ok wonderboy, wunder Dich nicht zu arg, aber Du hast jetzt folgende Möglichkeiten:

Du leitest, wie Du schon sagst, von der normalen TabPage Klasse ab...

oder Du leitest von UserControl ab und zeichnest selber.
Teilweise wirklich viel einfacher als viele denken wirden (zumindest die, die das noch nie gemacht haben)

Bei von UserControl ableiten ist zu tun:

  1. Erstell eine UserControl
  2. Erstelle Deine Controls darauf (ganz normal im Designer)
    falls Du selber zeichnen willst:

2a) überschreibe OnPaint (zeichne hier)
2b) überschreibe onPaintBackground und lasse die Routine leer!!! Nicht die Basisklasse aufrufen (sonst flackerts, beim Resizing o. ä.)

unbedingt im Konstruktor das hinzufügen vor allem anderen Code, falls
Deine UserTabPage weitere Controls enthält, die Du mit dem Designer daraufgezogen hast, vielleicht macht Deine IDE das auch schon automatisch:


	this.SuspendLayout();
        InitializeComponent();
	this.ResumeLayout();

Dann wird auch automatisch eine InitializeMethode erzeugt, die mit dem Code vom Designer gefüllt wird. Eben wie bei den normalen Controls auch...

Jetzt kannst Du mit dem Designer eine TabControl erstellen.

Der einfachste Teil:
Jaja ich weiss, aber wie platziert man denn nun die UserControl auf einer TabPage der TabControl? ganz einfach.
Du gehst auf die Toolbox in die Kategorie My user Controls(da, wo eh die ganzen Controls sind, die Du mit dem Designer benutzst), und fügst Deine eigene Exe als Item hinzu (Bei mir im englischen steht da add Remove). Du siehst ja eh, das Deine Control etwas anders aussieht, im SolutionExplorer wenn sie von TabControl/UserControl abgeleitet ist.
Und jetzt kannst Du sie ganz normal im Designer benutzen.

Eventuell in die TabControl ein Resize-Event/Paint-Event überschreiben, um ihm zu sagen, wie die UserTabPages Resized werden sollen.

Ich hänge noch ein Beispielprojekt an, das ich gemacht habe...

Ach ja, falls Du selber zeichnest (OnPaint usw.), siehst Du sofort im Designer wie Deine Komponente zur Laufzeit aussehen wird, da auch da schon OnPaint usw. aufgerufen wird...

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

S
223 Beiträge seit 2005
vor 18 Jahren

Hi,

ich habe auch ein eigenes Tabpage gemacht. Habe auch von UserControl geerbt und fast alles so, wie es dr4g0n76 erklärt hat. Nun habe ich noch eine Frage: Die Inhalte in meinem eigenen TabPages sind manchmal größer, als das TabControl drumherum (TabControl hat 1024x768, einige TabPages darin sind aber 1500 breit). Wie kriege ich nun bei den TabPages Scrollbars hin? Habe in der Klasse, wo ich meine eigenen TabPages erzeuge Autoscroll=true gesetzt, aber es hat nichts bewirkt; ich sehe keine Balken...

... jemand eine Idee? Das wäre toll, denn ich muss unbedingt scrollen können...

Danke schonmal. 🙂

S
223 Beiträge seit 2005
vor 18 Jahren

Habe es doch noch herausgefunden... man muss natürlich AutoScroll=True auf das entsprechende Control und nicht die TabPage setzen... dann geht es auch... bonk 😁 😉