In vielen Programm ist es ja so, das wenn eine 2te Form aufgeht, die 1te nicht mehr anklickbar ist. (Die 2te blickt dann).
Das würde Ich gerne auch machen wenn das überhaupt möglich ist 😉
Weiß ja auch nicht unter welches Stichwort das fällt sonst hätt ich mal gegoogelt 😉
mfg keving
.Showdialog istschon das was du suchst, nur ist das nciht mehr zeitgemäß...
besser ist;
this.Enabled = false;
mynewForm2.FormClosing += MySuperClosingEventhandler;
mynewForm2.Show();
...
MySuperClosingEventhandler(object sender, ....)
{
this.Enabled = true;
((Form)sender).FormClosing -= MySuperClosingEventhandler;
}
so erreichst du das der user die unterliegende form1 noch verschieben kann (was bei dem dialogverfahren nicht mehr geht) aber keine eingaben mehr tätigen kann.
edit: wieder abmelden vergessen...
Enable gibts garnicht in einer Form, Es gibt nur Enabled.
Korregier mich wenn Ich mich irre.
Edit: Es war ShowDialog welches gesucht wurde. Auch wenn es nicht zeitgemäß ist, es ist genau das was ich gesucht habe.
@ronny: thx
.
so erreichst du das der user die unterliegende form1 noch verschieben kann (was bei dem dialogverfahren nicht mehr geht) aber keine eingaben mehr tätigen kann.
Da ich bisher selber nur mit showDialog() gearbeitet habe, hab ich eben mal deine Event Lösung umgesetzt. Allerdings ist auch bei dieser Lösung das "gesperrte" Form völlig tot.
Also das lässt sich bei mir auch nicht mehr verschieben.
Hallo scrabbl,
das liegt daran, dass das Form als ganzes disabled wird. Wenn man nur die Controls, die sich darin befinden, disabled, geht es so, wie JAck30lena es beschrieben hat.
foreach (Control ctrl in Controls) {
ctrl.Enabled = false;
}
herbivore
du kannst auch ein panel nehmen es an die form docken. also Dockstyle oder fill.client (habe den befehl grade nicht im kopf). dann platzierst du alle controls auf das panel und de/aktivierst nur den panel. das sparrt dir dann eine schleife
MfG
ProGamer*Der Sinn Des Lebens Ist Es, Den Sinn Des Lebens Zu Finden!
*"Wenn Unrecht zu Recht wird dann wird Widerstand zur Pflicht."
*"Ignorance simplifies ANY problem."
*"Stoppt die Piraterie der Musikindustrie"
hm.. stimmt.. das habe ich nciht bedacht... allerdings muss man aufpassen.. denn wenn bereits vorher controls enabled=false waren, sind die nacher wieder true und das könnte unerwünschte nebeneffekte hervorbringen...
daher hier ein code der sogar diesen fall berücksichtig:
Form mynewForm = new Form();
var disabledControls = (from Control c in Controls where !c.Enabled select c).ToArray();
foreach (Control c in Controls) c.Enabled = false;
mynewForm.FormClosing += (s, a) =>
{
foreach (Control c in Controls)
c.Enabled = !disabledControls.Contains(c);
};
mynewForm.Show(this);
wie man sieht, ist das nicht wirklich mehr aufwand als showdialog...
edit: das .ToArray() vergessen...
Hallo Leute,
man kann sich das Leben auch schwer machen 😃 warum nicht einfach ein Panel in die Form legen, die alle Controls beinhaltet und nur dieses Panel disablen...
Man könnte sich auch eine CustomForm bauen die immer ein Panel beinhaltet.
Es ist toll jemand zu sein, der nichts von der persönlichen Meinung Anderer hält. - frisch-live.de
Man sollte dann noch beachten, daß man evtl. das Main- sowie Kontextmenü des Hauptformulars auch noch zwischenzeitlich disablen sollte (da diese keine Controls sind sondern direkt von Component abgeleitet sind)...
Jop,
oder wenn ich nicht möchte das der User auf dem anderen Forum rumdrückt und aber möchte das ers noch verschieben kann, wenns im Weg ist, dann geht doch auch einfach:
this.Visible = false
Damit isses sicher vor Eingaben und auch garaniert nirgends im Weg 😉)))
Nur Interesshalber, warum ist denn .Showdialog nichtmehr zeitgemäßg im Gegensatz zu der Methode die JAck30lena gepostet hat? Nur deshalb weil man dann die Form1 nichtmehr verschieben kann oder hat das noch einen anderen Grund?
ShowDialog() blockiert die ganze Anwendung.
ShowDialog(<CallerForm>) sollte da Abhilfe verschaffen, wenn ich noch recht weiß. Das blockiert dann nur die aufrufende Form.
> Codejunky <