[C#] MDIParent aus Klasse zuweisen

Gast #3946852
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
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
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

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.