Bonjour!
Dans mon application, je voudrais qu'il soit impossible de fermer un Form par un click sur la "croix", soit que celle-ci n'apparait pas, soit que celle-ci est desactivee.
Quelqu'un peut-il me dire? Merci.![]()
Bonjour!
Dans mon application, je voudrais qu'il soit impossible de fermer un Form par un click sur la "croix", soit que celle-ci n'apparait pas, soit que celle-ci est desactivee.
Quelqu'un peut-il me dire? Merci.![]()
lors de l'evenement closing de ta form:
e.cancel = true
J'sais pas exactement la syntaxe en VB, mais en C#, si tu veux aussi désactiver "réduire" et "plein écran", il suffit d'ajouter :
dans le load de la form.
Code : Sélectionner tout - Visualiser dans une fenêtre à part this.ControlBox=false;
Et il faut passer par quelque chose de plus compliqué pour désactiver rien que la croix, ce n'est pas implémenté directement.
Il faut ajouter ça dans la form
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 protected override CreateParams CreateParams { get { int CS_NOCLOSE = 0x0200; CreateParams param = base.CreateParams; param.ClassStyle |= CS_NOCLOSE; return param; } }
sans oublier un bouton de fermeture de la form dans la form, sinon, ce sera le gestionnaire de tâches qu'il faudra appeler
ou encore la solution Windows himself :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 [DllImport("user32.dll")] private static extern IntPtr GetSystemMenu( IntPtr hWnd, bool bRevert ); [DllImport("user32.dll")] private static extern bool EnableMenuItem( IntPtr hMenu, uint uIDEnableItem, uint uEnable ); private const int SC_CLOSE = 0xF060; private const int MF_GRAYED = 0x00000001;
Piet
dans t'est propriété de ta form tu met ControlBox à FALSE
et tu n'aura plus de croix ni "plein ecran" ni "réduire"
Cela me semble être la meilleur solution et la plus simple, cela annule aussi ALT+F4.Envoyé par AP
En tout cas c'est ce que j'utilise dans mes appli. suivi d'un appel de ma fonction quitter qui demande une confirmation à l'utilisateur.
Bonjour à tous,
ce topic est un peu dépassé, mais je tenais à développer l'option proposée en première réponse, car la première fois que je l'ai lue, je n'ai rien compris, étant encore un archi débutant vu que si on écrit simplement e.Cancel, il devient impossible de fermer le WindowsFrom.
On utilise donc bien l'événement FormClosing, mais avec une variable boolean et e.Cancel qui peut effectivement annuler la fermeture :
On déclare la variable Public pour la modifier depuis n'importe quelle partie du code. Il est important de mettre la valeur à False au départ. :
Puis on travail l'événement FormClosing, attention, l'événement FormClosed n'admet pas de e.Cancel
Code : Sélectionner tout - Visualiser dans une fenêtre à part Public FermetureWindowsForm As Boolean = Flase
De cette manière, tant qu'on ne déclares pas dans que FermetureWindowsForm = True, le WindowsFrom ne se fermera jamais, alors ne oublie pas de le faire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Private Sub WF_MonWindowsForm_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing If Not FermetureWindowsForm = True Then e.Cancel = True End Sub![]()
Pensez à mettre le topic ensi votre problème a été solutionné. / Un petit
est le bien venu si la réponse vous satisfait
Ce qui mérite d'être fait mérite d'être bien fait.
C'est pas faut.
Il me semble que l'évenement Closing de la form est appelé lors de la fermeture du cette dernière peut importe que ca soit par l'instruction Close, la croix ou un Alt-F4.
Il faut donc une condition pour déterminer si on annule la fermeture (ou pas).
La réponses de Piet me semble être la plus correcte selon la question de base.
Je me suis inscrit ce matin afin d'avoir l'occasion de vous dire merci, certaines de vos informations m'ont fait gagner du temps. A soixante-dix ans passés, il est préférable d'en perdre le moins possible !
J'avais ce problème de l'utilisation de la croix. la sortie de la forme s'effectue par un bouton "Menu" qui met fin (Close) à son utilisation et fait apparaître un menu d'accès à d'autres formes.
Le problème consistait donc à donner à la croix la même fonction que le bouton "Menu", ce qui grâce à vous s'est simplement réduit au code source suivant :
La condition "Form2.PrévisionSauve" dérive la fermeture sur une forme dialogue qui propose d'enregistrer les données qui ne l'ont pas encore été.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Private Sub WF_MonWindowsForm_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing If Form2.PrévisionSauve <> "" Then Form15.Visible = True Form15.ActivationDialogue(1, Me.Top, Me.Height, Me.Left, Me.Width, "De nouvelles données n'ont pas été enregistrées. Souhaitez-vous le faire ?") Else Form2.Visible = True Form2.Activate() End If End Sub
Les données à sauvegarder ont été enregistrées dans une variable de la forme "Menu" resté active, mais invisible.
Voilà, c'est dit, c'est fait, à une prochaine occasion... et encore une fois, merci.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager