Laden...

MdiChildActivate Event

Erstellt von pringels vor 17 Jahren Letzter Beitrag vor 17 Jahren 3.417 Views
P
pringels Themenstarter:in
24 Beiträge seit 2006
vor 17 Jahren
MdiChildActivate Event

Hallo,
bei einem MDI-Parent tritt das Event MdiChildActivate beim Aktivieren oder Schliessen des MDI-Childs auf.
Kann ich auf einfache Weise unterscheiden, ob das Event durch's aktivieren oder durch's schliesen ausgelöst wird?
Danke für Tipps...

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo pringels,

hm, ich glaube das geht nicht direkt, aber du kannst mit Form.Closing/.Closed für jedes MdiChild herausfinden, wann es geschlossen wird.

herbivore

2.223 Beiträge seit 2005
vor 17 Jahren

nabend,

du hast zwei objecte in dem event

einmal ein Object das du casten kannst
und eine art ChildActivateEventArgs (kann auch anders heißen)

deine benötigten Infos wirst du darin finden

mfg

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo blackcoin,

und eine art ChildActivateEventArgs (kann auch anders heißen)


public event EventHandler MdiChildActivate

MdiChildActivate ist also vom Typ EventHandler. Also bekommt man aus den EventArgs keine zusätzliche Info.

herbivore

2.223 Beiträge seit 2005
vor 17 Jahren

@ herbivore

hast ja recht ein versuch wars wert

mfg

2.223 Beiträge seit 2005
vor 17 Jahren

Weiter Idee

das Event tritt ja normal beim aktvieren auf

beispiel wen zwei mdichilds offen

b1
child1 ist aktiev
click auf child2
dann wird die aktivierung von child2 angezeigt

b2
child1 ist aktiev
schliessen child1
dann wird die aktivierung von child2 angezeigt

b3 nur ein mdichild
child1 ist aktiev
schliessen child1
dann wird dir nur mittgeteilt das activMdiChild = null gesetzt wurde (remove)
null (da keins mehr vorhanden)

so ich hoffe diese idee ist besser wenn auch komisch ausgedrückt

dies ist dann auch die lösung für mich warum man aktiv oder deaktiev nicht auslesen kann

denn es ist halt nur eine aktivierung und sei es die aktivierung von

563 Beiträge seit 2004
vor 17 Jahren

Hallo

Ich verstehe nicht ganz, warum man herausfinden muss, ob es geschlossen oder geöffnet wurde. Was z.B. beim schliessen passiert sollte im Form Close Event vom Child selber gehandelt werden. Wenn nicht, dann sag uns bitte mal, was du genau in diesem Event tun willst.

Gruss,
.unreal

P
pringels Themenstarter:in
24 Beiträge seit 2006
vor 17 Jahren

Hi,
danke erstmal für die vielen Antworten.
Der konkrete Anwendungsfall ist so: Ich hab ne MDI-Programm, mit dem ich Dateien öffnen kann. Für jede Datei geht ein neues MDI-Child auf. Damit eine Datei nicht ein zweites mal geöffnet wird habe ich ein Dictionary, in dem alle Forms als Value mit dem Dateiname als Key stehen:


private Dictionary<string, MeineForm> _openFileTable;
...
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.InitialDirectory = Environment.CurrentDirectory;
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                if(_openFileTable.ContainsKey(ofd.FileName))
                {
                    this.ActivateMdiChild(_openFileTable[ofd.FileName]);
                }
                else
                {
                        MeineForm f = new MeineForm();
                        f.MdiParent = this;
                        f.WindowState = FormWindowState.Maximized;
                        _openFileTable.Add(ofd.FileName,f);
                        f.Show();
                }
            }

Wenn ich nun ein MDI-Child schliesse, muss es ja aus dem Dictionary wieder entfernt werden. Das wollte ich eben nicht im FormClose des Childs machen, sondern im Parent. Im Parent scheint mir nur das MdiChildActivate brauchbar zu sein.
Für andere Lösungsvorschläge bin ich dankbar...

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo pringels,

vergiss ActivateMdiChild und nimm Closed. Ob die Behandlung im Parent oder im Child erfolgt, kannst du ja selber bestimmen. Es kommt ja nur darauf an, wer den EventHandler registriert. Lass das den Parent machen.

herbivore