Bonjour,

Je me suis créé une messagebox personnalisée pour avoir des boutons supplémentaires.

J'aimerai faire comme pour le MessageBox et la méthode show, de manière a faire :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
if (CWMessageBox.Show("Info", "Enregistrement Annuaire Gestim réalisé",
                            CWMessageBoxButton.Ok, CWMessageBoxIcon.Information) == MessageBoxResult.OK)
                        {...}
Mais la fenêtre n'attend pas le clic sur un bouton et me retourne toujours None.

Voici mon code

Merci d'avance.

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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Media.Imaging;
 
namespace THALES.SCIPIO.ClientAdmin.Resources
{
    /// <summary>
    /// Enum des boutons
    /// </summary>
    public enum CWMessageBoxButton
    {
        Ok, YesNo, YesNoCancel, OkCancel
    }
 
    /// <summary>
    /// Enum des icones
    /// </summary>
    public enum CWMessageBoxIcon
    {
        Question, Information, Error, None, Warning
    }
 
    /// <summary>
    /// Classe de la message box personnalisée
    /// </summary>
    public partial class CWMessageBox : ChildWindow
    {
        public delegate void MessageBoxClosedDelegate(MessageBoxResult result);
        public event MessageBoxClosedDelegate OnMessageBoxClosed;
        public MessageBoxResult Result { get; set; }
 
        /// <summary>
        /// Constructeur vide
        /// </summary>
        public CWMessageBox()
        {
            InitializeComponent();
            this.HasCloseButton = false;
            this.Closed += new EventHandler(MessageBoxChildWindow_Closed);
        }
 
        /// <summary>
        /// Constructeur
        /// </summary>
        /// <param name="in_sTitre">Titre de la message box</param>
        /// <param name="in_sMessage">Message de la message box</param>
        /// <param name="in_OptionBouton">Option bouton de la message box</param>
        /// <param name="in_OptionIcone">Option icone de la message box</param>
        public CWMessageBox(string in_sTitre, string in_sMessage, CWMessageBoxButton in_OptionBouton, CWMessageBoxIcon in_OptionIcone)
        {
            InitializeComponent();
            this.HasCloseButton = false;
            this.Closed += new EventHandler(this.MessageBoxChildWindow_Closed);
 
            this.Title = in_sTitre;
            this.txtMsg.Text = in_sMessage;
            this.ChargerButtons(in_OptionBouton);
            this.ChargerIcone(in_OptionIcone);
        }
 
        /// <summary>
        /// Affichage des boutons selon l'option choisie
        /// </summary>
        /// <param name="in_OptionBouton">Option des boutons à afficher</param>
        private void ChargerButtons(CWMessageBoxButton in_OptionBouton)
        {
            switch (in_OptionBouton)
            {
                case CWMessageBoxButton.Ok:
                    btnOK.Visibility = Visibility.Visible;
                    btnCancel.Visibility = Visibility.Collapsed;
                    btnNo.Visibility = Visibility.Collapsed;
                    btnYes.Visibility = Visibility.Collapsed;
                    break;
 
                case CWMessageBoxButton.OkCancel:
                    btnOK.Visibility = Visibility.Visible;
                    btnCancel.Visibility = Visibility.Visible;
                    btnNo.Visibility = Visibility.Collapsed;
                    btnYes.Visibility = Visibility.Collapsed;
                    break;
 
                case CWMessageBoxButton.YesNo:
                    btnOK.Visibility = Visibility.Collapsed;
                    btnCancel.Visibility = Visibility.Collapsed;
                    btnNo.Visibility = Visibility.Visible;
                    btnYes.Visibility = Visibility.Visible;
                    break;
 
                case CWMessageBoxButton.YesNoCancel:
                    btnOK.Visibility = Visibility.Collapsed;
                    btnCancel.Visibility = Visibility.Visible;
                    btnNo.Visibility = Visibility.Visible;
                    btnYes.Visibility = Visibility.Visible;
                    break;
            }
        }
 
        /// <summary>
        /// Affichage de l'icone selon l'option choisie
        /// </summary>
        /// <param name="in_OptionIcone">Option de l'icone à afficher</param>
        private void ChargerIcone(CWMessageBoxIcon in_OptionIcone)
        {
            switch (in_OptionIcone)
            {
                case CWMessageBoxIcon.Error:
                    imgIcon.Source = new BitmapImage(new Uri("Error.png", UriKind.Relative));
                    break;
 
                case CWMessageBoxIcon.None:
                case CWMessageBoxIcon.Information:
                    imgIcon.Source = new BitmapImage(new Uri("Info.png", UriKind.Relative));
                    break;
 
                case CWMessageBoxIcon.Question:
                    imgIcon.Source = new BitmapImage(new Uri("Question.png", UriKind.Relative));
                    break;
 
                case CWMessageBoxIcon.Warning:
                    imgIcon.Source = new BitmapImage(new Uri("warning.png", UriKind.Relative));
                    break;
            }
        }
 
        public static MessageBoxResult Show(string in_sTitre, string in_sMessage, CWMessageBoxButton in_OptionBouton, CWMessageBoxIcon in_OptionIcone)
        {
            CWMessageBox l_CWMessageBox = new CWMessageBox(in_sTitre, in_sMessage, in_OptionBouton, in_OptionIcone);
            l_CWMessageBox.Show();
 
            return l_CWMessageBox.Result;
        }
 
        #region Evenements
        private void OKButton_Click(object sender, RoutedEventArgs e)
        {
            this.Result = MessageBoxResult.OK;
            this.Close();
        }
 
        private void YesButton_Click(object sender, RoutedEventArgs e)
        {
            this.Result = MessageBoxResult.Yes;
            this.Close();
        }
 
        private void CancelButton_Click(object sender, RoutedEventArgs e)
        {
            this.Result = MessageBoxResult.Cancel;
            this.Close();
        }
 
        private void NoButton_Click(object sender, RoutedEventArgs e)
        {
            this.Result = MessageBoxResult.No;
            this.Close();
        }
 
        private void MessageBoxChildWindow_Closed(object sender, EventArgs e)
        {
            if (this.OnMessageBoxClosed != null)
                this.OnMessageBoxClosed(this.Result);
        } 
        #endregion
    }
}