neuen Tab in einem TabControl zur laufzeit erstellen
-
Hallo!
Ich arbeite zur Zeit an einer MDI-Anwendung. Mit mehreren Fenstern etc. funktioniert dies auch ganz prima. Ich hätte nun jedoch gerne irgendwo eine Leiste gehabt, in der ich die einzelnen Fenster 'intern' also quasi eine 'programminterne' Taskleiste, ablegen kann.
Da für soetwas mein bisheriger C# Kenntnisstand noch nicht ausreicht, wollte ich selbiges über das TabControl-Steuerelement machen. Hier hätte ich gerne, dass, wenn ich auf Datei-Neu klicke, sich dem bestehenden TabControl (mit einem Tab [= Unbenannt]) ein weiteres Tab hinzufügt, auf dem 'gleichzeitig' eine RichTextBox platziert wird, um anschließend Texte etc. hineinzuschreiben (irgendwie logisch *gg*).
Meine Frage daher, ist es überhaupt sinnvoll, das obengenannte 'Problem' über die Tab's zu lösen? Wenn ja, wie muss ich da vorgehen?
mfg
azok
-
Servus,
ob sinnvoll oder nicht keine Ahnung, keine Lust drüber nachzudenken
Aber wie du das realisieren könntest, dass kann ich dir verraten:
TabPage newTb = new TabPage("Unbenannt"); // Hier neues Tab Objekt erzeugen RichTextBox newBox = new RichTextBox(); // Hier neues RTB Objekt erzeugen newBox.Dock = System.Windows.Forms.DockStyle.Fill; // Hier noch ein paar Attribute setzen, was man für nötig hält und was nicht musst du selber wissen . . . tabControl_main.TabPages.Add(newTb); // Hier Tab nach TabControl tabControl_main.SelectedTab = newTb; // Hier den Tab selektieren
und schon hast du den Salat...
Viel Spaß
Hellsgore
-
Hallo zusammen,
ich verwende eine kleine Abwandlung obigen Schemas und möchte nun zur Laufzeit auf die RichTextBox im aktiven Tab zugreifen.
mit
tabcontrol->tabpage->selectedtab
komme ich ja an das aktive Tab, aber wie spreche ich dann die RichTextBox an, bzw. wie komme ich an den Inhalt? (sie ist das einzige Element in dem Tab, vielleicht hilft das)
-
in wpf waer es recht einfach
da repraesentiert ein objekt ein dokument
das objekt hat ein property "Title"in der xaml dann erstellt man das tab control, und bindet es gegen eine liste von diesen objekten
und der header wird jeweils gegen Title gebunden und der content dann gegen das jeweilige objektsobald du nun ein neues dokument hast - packst du es einfach in die liste und die ui kuemmert sich selber um den rest
aber egal - denn zum einen glaub ich das du forms verwendest, und zum zweiten lassen die "->" darauf schliessen das du .Net/CLI verwendest - und dann bist du im falschen forum
-
Mr Evil schrieb:
aber egal - denn zum einen glaub ich das du forms verwendest, und zum zweiten lassen die "->" darauf schliessen das du .Net/CLI verwendest - und dann bist du im falschen forum
Oh sorry, du hast natürlich recht. Ich hatte einfach die Suchen-Funktion verwendet und gesehen, hey, das ist ja so ähnlich wie mein Problem und prompt drauf geantwortet, ohne aufs Forum zu achten.
Wenn noch jemand einen Ansatz hätte, wäre ich dankbar, ansonsten jetzt im richtigen Forum:
http://www.c-plusplus.net/forum/viewtopic-var-p-is-1783824.html#1783824
-
azok schrieb:
Ich arbeite zur Zeit an einer MDI-Anwendung. Mit mehreren Fenstern etc. funktioniert dies auch ganz prima. Ich hätte nun jedoch gerne irgendwo eine Leiste gehabt, in der ich die einzelnen Fenster 'intern' also quasi eine 'programminterne' Taskleiste, ablegen kann.
Reicht dir ein Menu, so wie in Visual Studio unter dem Menüpunkt Fenster?
Entspricht zwar nicht genau deinen Vostellungen, ist aber umso einfacher umzusetzen:
In der MDI-From wird ein MenuStrip einfgefügt und bei Form::MainMenu ausgewählt. Dem Strip wird ein Menüpunkt hinzugefügt und dieses unter MenuStrip::MdiWindowListItem ausgewählt. Fertig.
Sonst ist eine Taskleiste sehr einfach, wenn du nur eine Art von Kinderfenstern hast bzw. diese nur auf eine Art behandelt werden sollen.