cs_fcolo
Messages postés201Date d'inscriptionmercredi 8 février 2006StatutMembreDernière intervention20 février 2007
-
22 mai 2006 à 16:06
hred1
Messages postés108Date d'inscriptionsamedi 9 avril 2005StatutMembreDerniè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?
// 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.
cs_fcolo
Messages postés201Date d'inscriptionmercredi 8 février 2006StatutMembreDernière intervention20 février 20072 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.
dgouttegattat
Messages postés129Date d'inscriptionmardi 22 novembre 2005StatutMembreDernière intervention30 décembre 20073 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.