Forum: PC-Programmierung [C#] MDIParent aus Klasse zuweisen


von Basti (Gast)


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

von Peter II (Gast)


Lesenswert?

zeige mal genau wie du es gemacht hast.

von Basti (Gast)


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 :(

von Basti (Gast)


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...?!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.