2009-12-25 5 views
2

J'ai une application Windows Forms qui ouvre une console en utilisant AllocConsole. Cela fonctionne bien, mais le problème est lorsque je ferme la console en cliquant sur le bouton "X", l'application entière se termine aussi, mais je veux que seule la fenêtre de la console se ferme et l'application doit continuer comme d'habitude. Y'a-t'il un quelconque moyen d'y arriver?.NET: Windows Forms + Console/Empêcher la fermeture

Répondre

2

Il existe un moyen de masquer par programme la fenêtre que vous avez allouée - utilisez FreeConsole.

Le bouton X sur la console alloc'd fonctionne comme le bouton X sur votre WinForm - il va chatouiller l'événement Form_Closing() je suppose.

Vous auriez besoin de logique dans ce gestionnaire d'événements pour décider si vous souhaitez fermer le formulaire ou non. Une possibilité: saisir la position de la souris et voir si elle est dans la boîte de délimitation pour le formulaire. Si c'est le cas, alors conclure que X du formulaire a été cliqué, et fermez l'application. Si la souris n'est pas dans le formulaire, puis conclure que la console X a été cliqué et appelez FreeConsole.

Je n'ai pas essayé cela.

+0

Ne fonctionne pas. L'événement Form_Closing n'est pas déclenché par la fenêtre de la console. J'ai également essayé l'événement Application.ApplicationExit, mais il n'est pas possible d'annuler cet événement. – raphaelr

+1

Que voulez-vous vraiment faire, de toute façon? La console qui peut être ouverte de cette façon est assez rudimentaire, j'ai toujours pensé qu'elle était surtout utile pour le diagnostic ou le débogage. Est-ce vraiment quelque chose que vous voulez exposer dans l'interface utilisateur de votre application? – Cheeso