C# Windows Forms boîte de Dialogue d'Impression, cliquez sur OK deux fois pour répondre
Je suis à l'aide de Visual Studio 2008 .net Framework 3.5 pour Windows forms client-serveur, l'application que je suis en train de travailler sur. Il y a un bug bizarre quand je lance le programme et essayez d'imprimer. La boîte de dialogue d'impression s'ouvre, mais je dois cliquer sur le bouton OK deux fois pour que cela fonctionne. Après le deuxième clic, il fonctionne très bien, pas d'erreurs. Quand je mets un point d'arrêt sur: if (result == DialogResult.OK) , le point d'arrêt n'a pas de déclenchement jusqu'à ce que le deuxième clic. Voici le code:
private void tbPrint_Click(object sender, EventArgs e)
{
try
{
printDialog1.Document = pDoc;
DialogResult result = printDialog1.ShowDialog();
if (result == DialogResult.OK)
{
pDoc.PrinterSettings.PrinterName = printDialog1.PrinterSettings.PrinterName;
pDoc.Print();
}
...
C'est me rend fou, et je ne vois rien d'autre qui pourrait interférer avec elle.
Pouvez-vous nous montrer le code de la printDialog quand il doit envoyer le résultat que DialogResult.OK?
C'est le scellé printDialog.
C'est le scellé printDialog.
OriginalL'auteur sbartlett | 2010-04-15
Vous devez vous connecter pour publier un commentaire.
Peut-être que c'est un problème similaire à celui-ci: http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/681a50b4-4ae3-407a-a747-87fb3eb427fd
Voici le correctif pour le problème avec le toolstrip et printdialog: codeguru.com/forum/showthread.php?p=1746116.
Il résout le problème en théorie, mais vous ne peut pas revenir à la DialogResult de la printdialog, donc c'est pas vraiment pratique à résoudre.
Vous pouvez envelopper ce qui doit l'entraîner dans une méthode appelée par le délégué. Juste eu le même problème, dans mon cas, c'était facile: j'ai un ToolStripMenuItem pour cette fonctionnalité, donc j'ai juste a déclenché ToolStripMenuItem_Clicked via délégué de ToolStripButton_Click 🙂
OriginalL'auteur joshperry
Je suis tombé sur ce, tout en ayant la "première toolstrip cliquez sur non reconnu" à l'aide d'un
OpenFileDialog
en C#/WinForms. Après beaucoup de malédiction et d'une recherche sur google, j'ai fait ça:Dans
toolstrip1_Click
:Dans la fonction qui utilise des appels
OpenFileDialog
:Deux choses les lignes semblent être la clé:
OpenFileDialog
ferme, l'accent doit être réinitialisé à la fenêtre principale (EditorForm.ActiveForm.TopLevelControl.Focus();
)this.Validate()
) et reconnaît l'événement de la souris.OriginalL'auteur JonS
Je l'ai réalisé à l'aide d'une minuterie.
Déposer une minuterie sur le formulaire contenant le toolstrip et le transformer en un one shot timer avec un retard de dire 1mS. Remarque: la Minuterie doit d'abord avoir Activé' à la valeur 'False'
Créer un timer tick gestionnaire d'événements
C'est peut-être sale, mais cela me faisait sortir d'un trou. HTH
OriginalL'auteur Mark