![]() |
MDI mit WinForms?
Hallo, nach der toolbar gleich das nächste :mrgreen:,
wie kann man mit der Windows Forms MDI Anwendungen schreiben? Ich finde dazu keine Passende Property im OI. Kann sein, dass das auch im .NET Framework SDK steht, aber ich konnte wieder nichts brauchbares finden... :( Schonmal Danke im voraus, JayK |
Re: MDI mit WinForms?
Ich weiß ja nicht, wie es bei C# und .NET ist, bei Delphi und Win32 gibt es allerdings eine Eigenschaft namens "FormStyle". Für das Hauptformular der Anwendung muß man es auf "fsMDIForm" setzen. Bei den Kindformularen muß es auf "fsMDIChild" (jeweils ohne "") stehen.
|
Re: MDI mit WinForms?
Zitat:
|
Re: MDI mit WinForms?
Ich habe gerade mal nachgeschaut: Für das Hauptformular mußt Du "isMDIContainer" auf TRUE setzen.
Bei den Kinderformularen bin ich aber ehrlich gesagt auch überfragt. |
Re: MDI mit WinForms?
Zitat:
Zitat:
|
Re: MDI mit WinForms?
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Ich weiß nicht wie's euch geht, aber ich habe hier so eine prima Sache. Nennt sich .Net SDK Doku. :) Einmal F1 auf IsMdiContainer und ich sehe alle infos, die man so braucht. ;) (Um ein bisschen für Chrome zu werben, habe ich gleich mal einen Screenie angehängt :mrgreen: ) |
Re: MDI mit WinForms?
Du musst die Childs nur so erzeugen, dass der MDIContainer der Owner ist. Dann sind diese automatisch MDI-Childs.
|
Re: MDI mit WinForms?
Ich habs jetzt!!! :D Wartet mal noch ein bisschen, dann kann ich nachher noch den genauen Code posten...
EDIT: Also hier der Code: (PS. nimmt man eigentlich auch für C# Delphi-Code-Tags? EDIT2: wochl eher nicht, denn dann kommt alles als Kommentar :roll:) /EDIT2
Code:
CreateChild kann auch anders heißen.
/// <summary>
/// Hauptunit /// </summary> namespace Programm { public class MainForm : System.Windows.Forms.Form { ... private void CreateChild() { Form2 Bezeichner = new Form2(); // neues Formular erzeugen Bezeichner.MdiParent = this; // Formular als MDI-Child Bezeichner.Show(); // Formular anzeigen } void MenuItemClick(object sender, System.EventArgs e) // oder anderes Ereignis natürlich { this.CreateChild(); } ... } } Form2 wird durch den Bezeichner des anderen Formulars ersetzt. Bezeichner, kann man sich sicherlich schon denken, ist der Bezeichner mir dem das Formular dann angesprochen wird. HINWEIS: Die Unit mit dem anderen Formular muss im den selben namespace oben haben, sonst funzt das nicht (hat mich gestern 2 Stunden gekostet :wall:) |
Re: MDI mit WinForms?
Zitat:
C# interessiert sich zum Glück einen feuchten *piep* um Dateinammen. ;) Hier mal ein absolut abstraktes Beispiel eines MdiContainers, der direkt im Konstruktor ein ChildForm anlegt. Ob du es in eine Datei oder in 2 schreibst macht absolut keinen Unterschied. (bzw in .Net 2.0 oder schon in .Net 1.1 mit Chrome: mit partial classes in soviele Dateien wie du willst...)
Code:
Hast du den Namespace in der using clause wird er einfach auch darin versuchen unbekannte Typen aufzulösen.
using System.Windows.Forms;
namespace MainNameSpace { public class MainForm : Form { public MainForm() : base() { IsMdiContainer = true; ChildNameSpace.Child myChildForm = new ChildNameSpace.Child(); myChildForm.MdiParent = this; myChildForm.Show(); } } } namespace ChildNameSpace { public class Child : Form {} } möglich wäre also auch:
Code:
oder in 2 Dateien:
using System.Windows.Forms;
using ChildNameSpace; namespace MainNameSpace { public class MainForm : Form { public MainForm() : base() { IsMdiContainer = true; Child myChildForm = new Child(); myChildForm.MdiParent = this; myChildForm.Show(); } } } namespace ChildNameSpace { public class Child : Form {} }
Code:
using System.Windows.Forms;
using ChildNameSpace; namespace MainNameSpace { public class MainForm : Form { public MainForm() : base() { IsMdiContainer = true; Child myChildForm = new Child(); myChildForm.MdiParent = this; myChildForm.Show(); } } }
Code:
macht, wie gesagt, absolut keinen Unterschied. :)
using System.Windows.Forms;
namespace ChildNameSpace { public class Child : Form {} } Falls du #develop verwendest solltest du dir vielleicht die neueste Version asu dem repository ziehen. Darin ist Mathias' Help 2.0 AddIn enthalten. Der gibt dir die Möglichkeit die .Net Doku, wie im VS, direkt innerhalb der IDE zu haben. :) |
Re: MDI mit WinForms?
Zitat:
Stimmt mit den Namespaces. Hatte ich wohl ein Brett vorm Kopf. :wall: ;) Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz