MessageBox.Show()
Je tiens à Montrer mon Messagebox dans le centre de son formulaire parent. si je déplace la forme et de montrer la messagebox, il toujours afficher dans le centre du bureau. je veux qu'il apparaisse avec la forme.
Pouvez-vous me donner quelques astuces et conseils?
OriginalL'auteur Jepe d Hepe | 2009-10-27
Vous devez vous connecter pour publier un commentaire.
La meilleure façon de le faire est d'utiliser la Fenêtre de Crochets et centre de la boîte de message vous-même. Il y a un article parfait qui montre que cette utilisation.
Vous pouvez le trouver ici:
http://www.codeproject.com/KB/dialog/CenterDialog.aspx
Vous pouvez également utiliser la classe dans votre application sans plonger trop profond pour trouver comment il fonctionne réellement.
Le plus simple serait de faire un nouveau MessageBox vous-même le formulaire. Qui sera selon votre goût et ressemble à la façon dont vous voulez qu'il soit. Aussi, vous pouvez ajouter toutes les fonctionnalités que vous souhaitez.
OriginalL'auteur Yogesh
Définir le propriétaire de la boîte de message de la fenêtre de votre fenêtre (en utilisant le premier paramètre de
.Show()
), plutôt que de ne pas la définition d'un propriétaire.Voir ici pour une référence.
Je suppose que cela dépend de ce que
this
est. J'ai peur que mon expérience est limitée à l'natif Win32MessageBox()
fonction, qui est un peu différent, et je suis à mi-chemin par le biais de répondre avant j'ai réalisé que vous étiez à l'aide de WinForms. J'ai donc modifié ma réponse à s'adapter à ce que j'ai trouvé dans la référence, mais je peut encore avoir quelques détails manquants. 🙂Le passage d'un handle de fenêtre pour MessageBox ne pas afficher la boîte de message dans le centre de la mère. C'est juste pour permettre de minimiser/maximiser avec le parent et il n'y a pas de tâche spécifique de l'icône de la boîte de message de la fenêtre.
pouvez-vous me donner un exemple pour afficher messagebox dans le centre de la mère?
intéressant, peut-être les WinForms MessageBox n'est pas mis en œuvre à l'aide de la Win32 fonction MessageBox.
OriginalL'auteur Greg Hewgill
Je l'ai fait avant en C#. Voici ce dont je me souviens.
Définir une classe:
Définir une classe basée sur MessageBox.
Créer une classe basée sur MessageBox et de créer une nouvelle méthode Show :
Dans votre code d'appel (ici, il est supposé être un winform et msgBox est basé sur la nouvelle boîte de message de la classe), appeler le nouveau Spectacle de la méthode et de passer un IWindowWrapper exemple sur Afficher par exemple
Oui par exemple public class MyMessageBox : MessageBox ... etc.
Vous n'avez pas à utiliser le C# pour ce faire, mais c'est ce que j'ai utilisé. C'est que la langue que vous êtes à la programmation?
Le Deuxième Code. Vais-je Hériter d'une Messagebox? ou tout simplement créer un formulaire avec le même style que Messagebox? c'.ShowDialog() n'est pas disponible si j'ai hériter d'un messagebox
Comment envisagez-vous d'hériter d'une MessageBox? Pouvez-vous me montrer un exemple?
OriginalL'auteur ChrisBD
J'ai fait cette classe basée sur une classe pour Windows Forms qui j'ai trouvé somwehere d'autre.
Il suffit d'ajouter la classe à votre projet WPF et de fournir "ce" en tant que paramètre à la méthode d'assistance comme ceci:
Puis afficher la boîte de message:
Bonne idée. Mais s'il vous plaît l'esprit des mots : "volé" que la rigueur de l'expression. J'ai explicitement dit "trouvés somwhere d'autre", mais vous avez tout à fait raison au sujet de l'attribution.
Et non, le code d'origine n'est pas venu de frome le lien que vous avez ajouté. Il est venu de Jason Carr: jasoncarr.com/technology/.... J'ai juste modifié pour fonctionner dans WPF. Merci Jason.
Ups. Ne pas voir que vous avez ajouté ce lien 🙂
Vous devez créer une variable pour stocker le résultat de GCHandle.Alloc et appel GCHandle.Free() à l'intérieur de la fonction de Rappel Crochet après UnhookWindowsHookEx
OriginalL'auteur AH.
Ici est un très facile à utiliser la solution et cela fonctionne parfaitement:
Suit:
(à l'intérieur d'un
UserControl
ou unForm
)OriginalL'auteur JohnB