Je cherche une boîte de dialogue avec une case à cocher "Don's montre-moi cette boîte de dialogue" en C #. P>
J'ai googlé et cherchez beaucoup, mais je ne pouvais tout simplement pas trouver une solution élégante. P>
La boîte de dialogue doit fonctionner aussi similaire que la messagerie nativebox.Show, mais avec une nouvelle valeur de propriété (valeur BOOL) retour à l'appelant. P>
Merci. P>
3 Réponses :
Pourquoi ne créez-vous pas le vôtre. C'est très simple. Décrivez simplement de System.Windows.Forms.Form CODE> Classe et imitez-la comme celle que vous voulez. P>
Ce n'est pas aussi simple que ce que je pensais. MessageBox a des sélections de boutons différentes et des sélections d'icônes, et j'en ai aussi besoin. Si je pouvais dériver de MessageBox, ça va être si bon. Mais nous ne pouvons pas dériver que MessageBox, car il n'y a pas de constructeur public ou de constructeur public.
@Peter Lee - J'ai eu un problème similaire à Java. La bibliothèque standard fournit à toutes ces bonnes boîtes de dialogue de messages à la recherche standard, mais dès que vous souhaitez personnaliser la boîte de dialogue, vous perdez toutes les ressources de largeur / hauteur standard, des ressources d'icône, de la mise en place des boutons, des largeurs de boutons, des marges de fenêtre, etc. Devait creuser dans les tripes de faible niveau de la façon dont Java construit ses dialogues pour s'assurer que mes dialogues personnalisés ont suivi la dialogue standard et la sensation. Ce n'était pas amusant, et cela m'a laissé vouloir une manière normalisée de le faire. Au moins, le concepteur GUI Visual Studio est livré avec de bonnes valeurs par défaut intégrées.
@Peter Lee: C'est certainement possible i> de dupliquer tous les styles possibles que la standard MessageBox code> fournit dans votre propre boîte de dialogue personnalisée. C'est plus de travail, mais c'est quelque chose que vous pouvez réutiliser encore et encore. Cet exemple (qui recrée un TaskDialog de style Vista où il n'est pas disponible dans les versions précédentes du système d'exploitation) est un excellent exemple de la façon dont vous pourriez faire cela: codeproject.com/kb/vb/vdialog.aspx
Je ne pense pas qu'il y aura une solution réaymade comme telle. Pour la mise en œuvre «Ne pas me montrer de nouveau», vous devez persister les informations en dehors du dailog et créer un profil utilisateur. P>
Si votre infrastructure de persistant le profil utilisateur est là, vous pouvez créer une classe similaire à la classe code> MessageBox code>. Vous ne pouvez pas dériver de MessageBox code> Toutefois. P>
"Ne me montre pas à nouveau" ou non, je l'ai sauvé dans les paramètres.Settings.
Donc, vous devrez créer une boîte de dialogue.
Les applications Vista et Windows 7 peuvent utiliser les nouvelles fonctionnalités TaskDialog qui étendent les messages de messagerie standard pour prendre en charge une case à cocher en bas (ainsi que toutes sortes d'autres goodies telles que les liens de commande, le texte de bouton personnalisé, les pieds de page, etc.). p>
p>
Malheureusement, de C #, vous devez faire une interoption pour y accéder. Si vous voulez juste que les TaskDialogs avancés ciblent Vista / Windows 7, utilisez le Windowsapicodepack à partir de http: //code.msdn .microsoft.com / Windowsapicodepack qui peut gérer la complexité interopt pour vous. P>
Si vous devez prendre en charge XP, il existe une excellente enveloppe qui prend en charge les tâches de tâches natives sur Vista / 7 avec une replie WinForms pour XP ici: http://www.corefroject.com/kb/vista/vista_taskdialog_wrapper.aspx p>
codeProject.com/kb/vista/vista_taskdialog_wrapper.askx fonctionne fantastique. J'ai testé sur Win7 et WinXP. Merci.
Est quelque chose de similaire maintenant disponible pour Windows 10?