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...
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
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
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
@ herbivore
hast ja recht ein versuch wars wert
mfg
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
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
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...
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