[C#] MDIParent aus Klasse zuweisen

Gast #3946852
Lesenswert?
• ▲
▼
Hallo Leute,

ein frohes neues Jahr wünsche ich noch...

Zu meinem Problem:

Ich habe ein MDIParent Fenster und einige "Unterfenster". Das hat bisher 
alles Wunderbar funktioniert, wenn ich aus dem Parent das Childfenster 
öffne:
1
Form1 form1 = new Form1();
2
form1.MdiParent = this;
3
form1.Show();

Um die Childfenster besser kontrollieren zu können, habe ich nun eine 
Klasse dazwischen geschalten. Leider bekomme ich die Fenster nicht mehr 
dem Parent zugeordnet, obwohl ich einige Tipps im Netz verfolgt habe.

Ich habe also die Instanz des Parents der Klasse im Konstruktor 
übergeben:

PowerMeter temp = new PowerMeter(myInstanceHandleMDIParent);

Leider scheitert der Aufruf von oben (ohne this, mit neuem Handle) 
dennoch.

Ich führe das Erstellen der PowerMeter Klasse in einem WindowsForm Timer 
aus... der wird ja nicht im ThreadPool gestartet. Sollte also sauber 
sein.
InvokeRequired wird auch nicht angesprungen.

Hab leider noch keine Lösung gefunden... die ist sicher ganz einfach... 
nur wie?


Danke für eure Hilfe.

Viele Grüße

Basti
Gast #3946978
Lesenswert?
• ▲
▼
Okay, also etwas genauer...

Mein Hauptfenster:
(wie es funktioniert)
1
public partial class MDIParent1 : Form
2
    {
3

4
        public static MDIParent1 myInstanceHandle = null; 
5

6
       public MDIParent1()
7
        {
8
            InitializeComponent();
9
            myInstanceHandle = this;
10
            
11
        }
12

13
       private void timer2_Tick(object sender, EventArgs e)
14
        {
15
                From1 form1 = new Form1(this);
16
                form1.MdiParent = this;
17
                form1.Show();
18
         }

Wie es nicht mehr funktioniert (nur timer2_Tick):
1
private void timer2_Tick(object sender, EventArgs e)
2
        {
3
                PowerMeter temp = new PowerMeter(myInstanceHandle);
4
         }

Dazu der Source der PowerMeter Klasse (keine Form, soll aber Form 
starten):
1
    public class PowerMeter
2
    {
3
        public PowerMeter(MDIParent1 mdip)
4
        {
5
                From1 form1 = new Form1(mdip);
6
                form1.MdiParent = mdip;
7
                form1.Show();
8
        }
9
}

Stat myInstanceHandle zu benutzen, hab ich auch schon einfach this 
übergeben... das mit dem Handle war nen Tipp aus dem Netz... 
funktioniert aber leider auch nicht :(
Gast #3946981
Lesenswert?
• ▲
▼
Ach jetzt funktionierts... peinlicher Fehler...

Variable nicht zugewiesen und erst beim runter brechen auf einfaches 
Beispiel gemerkt... na wie so oft :D
Danke Peter II für den Denkanstoß

Dann funktionierts auch gut mit this und braucht diese myInstanceHandle 
nicht mehr... gilt wohl nur für Threads, wenn man nicht mehr im 
namespace von this ist...?!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren