Wie zur Hölle zweites Form öffnen? Thread?
-
Ich hätte noch eine Frage zu Anwendungen mit mehreren Fenstern, und zwar:
Wenn ich ein Fenster aus dem anderen heraus öffne, wie kann ich dem neuen Fenster zwingend den Fokus erteilen? Also so, daß das ursprüngliche Fenster nicht angewählt werden kann und wirklich ruht, bis der neue Dialog geschlossen wird. Welche Variablen muss ich dafür setzen und welche Signale muss ich abfangen, um zu erfahren, daß das neue Fenster geschlossen wurde und ich das alte wieder freigeben muss?Bis dann denn!
McTrevor
-
Ähhh... fragen wir mal so: Wie machst Du es denn jetzt???
Normalerweise macht man es so:Form2^ formneu = gcnew Form2(); formneu->ShowDialog(this);
-
Bis jetzt mache ich es genauso wie beschrieben. Das neue Fenster ist zwar schön über dem alten, aber das alte kann ich trotzdem anwählen (auch wenn es im Hintergrund bleibt) und noch Änderungen drin vornehmen. Insbesondere kann ich den Button, mit dem ich das neue Fenster erzeugt habe, erneut drücken und so mehrere Instanzen davon erstellen, was je nach Anwendung natürlich katastrophale Folgen haben kann.
Bis dann denn!
McTrevor
-
Du erzeugst bisher einen "Modalless-Dialog" was Du gar nicht willst... deshalb "ShowDialog" anstelle von "Show"...
-
Ah vielen Dank. Das kann natürlich sein! Werd´s gleich mal ausprobieren. Wie lange bringt man zu, bis man derart auf Draht ist in dem Thema wie Du?
Bis dann denn!
McTrevor
-
Soll ich mich jetzt selber Loben !?
https://mvp.support.microsoft.com/default.aspx/profile=EE63B639-568B-452F-927E-EABE4F5B9CF5
(Und "NEIN" ich bin kein MS Mitarbeiter!)
-
Olala, das erklärt einiges... Naja ich programmiere gerade quasi das erstemal freiwillig für den privaten Gebrauch. Für die Uni (Informatik) musste ich mir ja schon das ein oder andere beibringen, aber ich habe mich da immer nur auf das nötigste beschränkt. Ich werde also noch viele Jahre brauchen, bis ich ein halbwegs brauchbarer Programmierer bin... Bin halt eher ein Theoretiker.
Bis dann denn!
McTrevor
-
Habe mal wieder ein Problem, aus dem ich nicht schlau werde. Ich möchte bei einem normalen Button unterscheiden, ob er mit links oder rechts geklickt wurde. habe den Button also nicht für das normale Click-Event angemeldet sondern für das Mausklickevent angemeldet. Trotzdem wird die als Eventhandler verknüpfte Funktion nur bei einem Linksklick aufgerufen. Rechtsklicks werden leider ignoriert. Kann ich den normalen Button doch noch irgendwie dazu bringen bei Links und bei Rechtsklick zu reagieren, ohne mir jetzt eine eigene Klasse von Button abzuleiten? Ich vermute es gibt einfach nur eine boolsche Variable die, ich nur nicht gefundn habe, die ich setzen muss.
Bis dann denn!
McTrevor
-
Hmmm.... ein Button ist eigentlich dafür da, dass er (mit der linken Maustaste) gedrückt wird oder auch z.B. mit der Tastatur (Space).
Einen Klick wirst Du AFAIK somit nur so bekommen...Wenn Du trotzdem die rechte Maustaste mitbekommen willst, kannst Du das "MouseUp"-Event abfragen...
-
Um wirklich einen Rechtsklick zu bekommen, müsste ich ja dann erstmal das Mousedown abfangen, einen Bool setzen, und dann beim Mouseup den Bool abfragen. Wenn ich nur beim Mouseup nachfrage, kann man auch einfach mit gedrückter rechter Maustaste den Zeiger auf den Button bringen und dann loslassen.
Und wenn ich es mit dem MouseUp und dem MouseDown mache muss ich auch noch das Leave-Ereignis abfangen, damit der Bool zurückgesetzt wird, wenn man nach dem Drücken die Maus noch wegzieht, bevor man losläßt. Wenn ich den Spaß dann auch noch mit mehreren Buttons machen will, wirds ganz eklig (auch wenn ich insgesamt mit nur einem Bool hinkomme, muss ich für jeden Knopf drei Eventhandler implementieren).
Ein weiteres Problem kosmetischer Natur wäre aber auch die fehlende Animation des Button-Klicks. Habe leider noch nichts gefunden, womit man den Button nur "optisch" drücken kann.
Ich kann doch nicht der erste Mensch sein, der auf die Idee kommt, einen Button doppelt zu verwenden und die ausgewählte Aktion von der Maustaste abhängig zu machen?
Und wo bitte liegt der Sinn darin bei Buttons das MouseUp und MouseDown Ereignis für die rechte Maustaste zuzulassen, aber das MouseClick Ereignis nicht? das ist doch absolut inkonsequent. Zumal es bei anderen Controlelementen ja geht.
Bis dann denn!
McTrevor