Creer un messageBox personnalisé

Résolu
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 - 22 mai 2006 à 16:06
hred1 Messages postés 108 Date d'inscription samedi 9 avril 2005 Statut Membre Dernière intervention 6 décembre 2007 - 22 mai 2006 à 21:11
Bonjour,

je réalise une application de copie de fichier avec fenetre d'état un peu comme SuperCopier.
Actuellement, lorsque le fichier destination existe, je demande à l'utilisateur si il veux l'ecraser.
Par contre, ca devient très chiant lorsqu'on copie une série de fichier déjà existant.
Je veux donc rajouter à mon MessageBox une checkbox "appliquer à tous".

J'ai pensé créer une classe qui hérite de System.Windows.Form.MessageBox mais soit il m'oblige à créer un constructeur pour ma classe par exemple Toto:
toto() : base()
{}

Soit, si j'en met un, il me dit que le MessageBox n'a pas de constructeur.

Je pensais créer une winform dans laquelle je mettrais les bouttons, textes et ma checkbox mais j'aimerai pouvoir retrouver le principe des MessageBoxButton et MessageBoxIcon.
Pour les bouttons je peux tester la valeur et créer les bouttons qu'il faut mais pour l'icone je ne sais pas comment récupérer l'image pour la mettre dans une pictureBox.

Auriez vous une idée à me proposer pour avoir un messageBox avec une checkbox?

f.colo
A voir également:

5 réponses

dgouttegattat Messages postés 129 Date d'inscription mardi 22 novembre 2005 Statut Membre Dernière intervention 30 décembre 2007 3
22 mai 2006 à 17:57
Voilà.
En fait, ce n'est pas GetIconInfo(), mais LoadIcon() qu'il faut utiliser. Ça donne quelque chose comme ça :





<hr />

// Déclarer la fonction native permettant de récupérer le handle d'icône

[DllImport("user32.dll")]
private static unsafe extern IntPtr LoadIcon(IntPtr hInstance, void* lpIconName);

// Déclarer la fonction native permettant de libérer le handle d'icône
[DllImport("user32.dll")]
private static extern bool DestroyIcon(IntPtr hIcon);

// Récupérer une icône
private unsafe Icon GetIcon(int iconNumber) {
   // On récupère le handle
   IntPtr IconHandle = LoadIcon(IntPtr.Zero, ((IntPtr)iconNumber).ToPointer());
   // On créé l'icône correspondante
   Icon icon = Icon.FromHandle(iconHandle)
   // On peut libérer le handle
   DestroyIcon(iconHandle);
   return icon;
}





<hr />
Le paramètre iconNumber indique l'icône à récupérer et doit être une des valeurs définies dans le fichier Winuser.h du SDK Windows. Ces valeurs sont 32513 pour l'icône "Erreur", 32514 pour l'icône "Question", 32515 pour l'icône "Exclamation" et 32516 pour l'icône "Information". Pour faciliter les choses, je te conseille de créer une énumération plutôt que d'utiliser ces valeurs directement.
3
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 2
22 mai 2006 à 16:21
Sinon, peut on changer le nom d'affichage d'un boutton, c'est à dire je met un bouton System.Windows.Forms.MessageBoxButtons.YesNoCancel et le Cancel je le renomme en "appliquer à tous" tout en testant DialogResult.Cancel en retour.

f.colo
0
dgouttegattat Messages postés 129 Date d'inscription mardi 22 novembre 2005 Statut Membre Dernière intervention 30 décembre 2007 3
22 mai 2006 à 17:15
Bonjour,
Tu ne peux dériver de System.Windows.Forms.MessageBox, car cette classe ne possède qu'un seul constructeur privé. Le seul moyen d'obtenir ce que tu veux semble donc effectivement de créer ta propre MessageBox.

Malheureusement, je ne pense pas que tu puisses récupérer et afficher les icônes originales de MessageBox en .NET "pur" (j'entends par là, sans faire appel à P/Invoke) : en effet, la classe System.Windows.Forms.MessageBox elle-même ne manipule pas directement les icônes, elle appelle simplement la méthode MessageBox de l'API Win32.

Il existe une fonction Win32 appelée GetIconInfo() qui devrait permettre de récupérer les icônes nécessaires. J'essaie de  regarder cela de plus près et je reviens.
0
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 2
22 mai 2006 à 18:44
Beh je te remercie beaucoup,

je vais me jeter dans le developpement d'une nouvelle classe :).
Si j'y arrive et que ca donne bien, je la mettrais sur le site.

f.colo

PS: Je valide demain après les tests
0

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

Posez votre question
hred1 Messages postés 108 Date d'inscription samedi 9 avril 2005 Statut Membre Dernière intervention 6 décembre 2007
22 mai 2006 à 21:11
Bonjour,

pour celà tu dois rajouter une autre fraime (ta messageBox)

tu rajoutes tes boutons avec les icons que tu veux

puis tu fais appel à cette fraime et en fonction du bouton clické tu lance ton evénement

Voilà

RED1
0
Rejoignez-nous