Fermeture d'une form avec la croix

Résolu
cs_arb Messages postés 40 Date d'inscription lundi 18 février 2002 Statut Membre Dernière intervention 5 novembre 2012 - 14 oct. 2008 à 08:27
CSharpJSharp Messages postés 98 Date d'inscription samedi 17 septembre 2005 Statut Membre Dernière intervention 24 mai 2010 - 26 avril 2010 à 12:48
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

xmox667 Messages postés 357 Date d'inscription jeudi 8 juin 2006 Statut Membre Dernière intervention 26 décembre 2011 4
14 oct. 2008 à 09:09
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+
1
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
14 oct. 2008 à 09:21
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)
0
CSharpJSharp Messages postés 98 Date d'inscription samedi 17 septembre 2005 Statut Membre Dernière intervention 24 mai 2010 1
26 avril 2010 à 12:48
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;
}
}
}
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
14 oct. 2008 à 09:20
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)
-1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
14 oct. 2008 à 14:24
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-
-1
Rejoignez-nous