Fermeture d'une form avec la croix [Résolu]

Signaler
Messages postés
40
Date d'inscription
lundi 18 février 2002
Statut
Membre
Dernière intervention
5 novembre 2012
-
Messages postés
98
Date d'inscription
samedi 17 septembre 2005
Statut
Membre
Dernière intervention
24 mai 2010
-
Bonjour

j'ai une form qui a été crée et je voudrais desactiver la croix rouge en haut à droite pour fermer.
Comment faire pour soit faire disparaître cette croix, ou alors comment puis-je placer du code lorsuqe l'on clique dessus?

D'avance merci

5 réponses

Messages postés
357
Date d'inscription
jeudi 8 juin 2006
Statut
Membre
Dernière intervention
26 décembre 2011
3
Salut,
Tu as la propriété ControlBox. Si tu l'a met à false tu n'a affiche plus les 3 petits boutons:
Close , Maximize et Minimize.

L'event FormClosing se déclenche  lorsque tu clique sur le bouton "Croix".
La fenêtre n'est pas encore fermée et tu peut annuler l'action avec e.Cancel = true.

L'event FormClosed. La fenêtre est fermé et tu peux savoir pourquoi en accédant à e.CloseReason.

A+
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
64
Argh !

J'ai fait quelque chose d'autre pendant que je répondais...

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Messages postés
98
Date d'inscription
samedi 17 septembre 2005
Statut
Membre
Dernière intervention
24 mai 2010
1
C'est un vieux sujet certe, mais c'est toujours utile de poster une autre astuce.

public class LaFormADesactiverLaCroix : Form

{
private const int CROIX = 0x0200;

protected override CreateParams CreateParams
{
get
{
CreateParams createParams = base.CreateParams;
createParams.ClassStyle |= CROIX;
return createParams;
}
}
}
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
64
Hello,

Tu as deux solutions :

- Mettre la propriété ControlBox de ta Form à false, mais ça enlève aussi les bouton pour maximiser et minimiser la form.
- Regarde du côté de l'event FormClosing pour capturer la fermeture de ta form, et, le cas échaéant, annuler cette fermeture :

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
   if (MessageBox.Show("Etes-vous certain de vouloir quitter ?", "Quitter", MessageBoxButtons.YesNo) == DialogResult.No)
        e.Cancel = true;
}

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
Si pas besoin de confirmation, juste désactiver le button, c'est probablement plus propre via API

const int MF_BYPOSITION = 0x400;


[DllImport("User32")]
private static extern int RemoveMenu(IntPtr hMenu, int nPosition, int wFlags);


[DllImport("User32")]
private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);


[DllImport("User32")]
private static extern int GetMenuItemCount(IntPtr hWnd);


private void Form_Load(object sender, EventArgs e)


{
        IntPtr hMenu = GetSystemMenu(this.Handle, false);
        int menuItemCount = GetMenuItemCount(hMenu);
        RemoveMenu(hMenu, menuItemCount - 1, MF_BYPOSITION);
}








<hr />
-My Blog-