Zum Inhalt springen

C#: Schliessen verhindern


Didii

Empfohlene Beiträge

hallo,

habe einen C# Form-Dialog der wie bei einer MessageBox nur einen Button hat. Der Benutzer soll die Meldung lesen und auf den Button klicken. Die Form hat aber das Schliessen "x" am rechten oberen rand. Wie bekomme ich das weg?

und kann man es dann mit "alt+F4" schliessen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du suchst das Ereignis, das beim Schliessen des Fensters ausgelöst wird und du behandelst es in einer eigenen Funktion.

Die macht nichts weiter, als anzugeben, dass das Ereignis als behandelt zu markieren. Sollte das nicht klappen, dann Cancel das Ereignis einfach.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

also wie folgt kannst du das "X" und "Alt + F4" deaktivieren. Wenn du oben rechts überhaupt nix angezeigt bekommen willst, stelle es mit ControlBox aus.

Also du musst einfach das WndProc überschreiben.


		protected override void WndProc(ref Message m)

		{

			if(m.Msg != 0x0010)

			{

				base.WndProc (ref m);

			}

			else

			{

				//Windows sendet die WM_CLOSE Nachricht an deine Form

				//Ignoriere sie und die Anwendung kann nicht geschlossen werden

			}

		}

Hoffe geholfen zu haben.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Tatsache, das Formular lässt sich noch mit Alt+F4 schließen. In der Hilfe steht allerdings unter Form.ControlBox-Eigenschaft etwas anderes:

Eigenschaftenwert

true, wenn im Formular in der linken oberen Ecke ein Systemmenüfeld angezeigt wird, andernfalls false. Der Standardwert ist true.

Hinweise

Wenn die ControlBox-Eigenschaft auf true festgelegt wird, wird das Systemmenüfeld in der linken oberen Ecke der Titelleiste angezeigt. Durch Klicken auf das Systemmenüfeld greift der Benutzer auf das Systemmenü zu.

Hinweis

Wenn im Formular kein Systemmenüfeld angezeigt wird, kann das Formular nicht mit der Tastenkombination ALT+F4 geschlossen werden.

Hinweis

Wenn für die ControlBox-Eigenschaft false festgelegt wurde, hat diese keine Auswirkungen auf ein untergeordnetes MDI-Formular (Multiple Document Interface), das zum Erstellungszeitpunkt maximiert angezeigt wird.

Aber dieser "Fehler" ist scheinbar bekannt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 3 Monate später...

Und was tut man, wenn das bei einem nicht funktioniert?

Ich habe ein modal angezeigtes Formular (über showDialog) und möchte nicht, daß Form_Closing das Schliessen der Form bewirkt, nachdem ich sie z.B. mit Hide() verborgen habe.

Hab schon so einiges ausprobiert, aber es beendet sich dann trootzdem das komplette Programm weil "ShowDialog" dann ein Result meldet, obwohl es das nicht soll. :(

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe ein modal angezeigtes Formular (über showDialog) und möchte nicht, daß Form_Closing das Schliessen der Form bewirkt, nachdem ich sie z.B. mit Hide() verborgen habe.

Kannst Du das nochmal bissl genauer erklären, ich verstehe Dein Problem nicht.

Das liegt bestimmt daran, dass heute Sonntag ist. :OD

Link zu diesem Kommentar
Auf anderen Seiten teilen

Man ruft mit ShowDialog aus einer in einer eigenen Klasse befindlichen Main ein Formular auf, damit der Code erst weiter ausgeführt wird, wenn das Formular geschlossen wird, bzw ein dialogResult zurückkommt.

Eben dieses Ereignis (Form.close) tritt jetzt aber bereits auf, wenn das Formular in den Zustand der Unsichtbarkeit gesetzt wird. Und warum auch immer: Wenn man dort den EventArgs Member Cancel auf true setzt wird das allerliebst ignoriert.

Wenn man sich die Mühe machen möchte kann man auch die "OnClosing" Methode überschreiben und das Closing Ereignis nur ausführen lassen, wenn man es will; jegliche If Bedingung wird dort aber anscheinend de facto in die Wüste geschickt. Da will jemand unbedingt, daß DialogResult == Cancel ist, das spürt man ganz deutlich. ;)

Hab mein Programm jetzt umgestellt, sodaß dieses Formular jetzt nihct mehr modal aufgerufen wird, dann funktioniert alles wie mit Meister Propper geputzt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...