printdialog.showdialog (); ne pas afficher la boîte de dialog d’impression dans Windows 7 avec 64 bits

J’ai un contrôle personnalisé avec l’élément de la barre d’outils d’impression. Lorsque vous imprimez le contrôle, la boîte de dialog ne s’affiche pas dans Windows 7 avec un système d’exploitation 64 bits dans un autre système fonctionnant correctement. problème que dans Windows 7 avec 64 bits.

mon problème printdialog ne vient pas dans Windows 7 os avec 64 bits.

J’ai vérifié et analysé -> PrintDialog.ShowDialog () retourne immédiatement annuler au lieu d’afficher le dialog c’est le problème.

J’ai trouvé la solution au problème en recherchant les liens suivants:

http://social.msdn.microsoft.com/Forums/en/netfx64bit/thread/8760fb6c-ae63-444e-9606-cd3295ce6b5d

http://msdn.microsoft.com/en-us/library/system.windows.forms.printdialog.useexdialog.aspx

En définissant true sur la propriété UseExDialog de printdialog, la boîte de dialog fonctionne correctement. Ce style de dialog est semblable à Windows XP et non à Windows7 style.so, ce n’est pas une solution excellente.

La propriété UseExDialog a la valeur true, mais le style de dialog d’impression ressemble à celui de Windows XP et non à Windows 7. J’ai besoin d’une autre solution pour afficher le dialog d’impression dans Windows 7 avec 64 bits.

veuillez fournir une solution complète à ce problème

Merci

Shiva

Forums de Microsoft :

via Mike Dos Zhang (MSFT CSG)

La classe PrintDialog risque de ne pas fonctionner sur les microprocesseurs AMD64 (x64 ou Tout processeur appartient à AMD64, y compris Intel x64cpu), sauf si vous définissez la propriété UseEXDialog sur true.

C’est un problème connu.

Et cette limitation a été prise en charge dans .net framework4. Si vous souhaitez utiliser cette classe avec une boîte de dialog de style windows7, vous devrez utiliser .net framework4. Sinon, vous devrez utiliser la boîte de dialog de style xp avec la valeur true pour la propriété UseEXDialog. , ou en utilisant la plate-forme cible x86.

Dans mon cas, le deuxième problème connu était le suivant. Nous avons mis à niveau .NET 2.0 vers .NET 4.0 et tout a recommencé à fonctionner sans modification du code (pour l’impression).

Si vous ne pouvez ou ne voulez pas définir UseEXDialog = true une alternative serait de définir votre Plattform sur x86

Le désavantage est évident, mais cela devrait vous donner l’ avantage de ne pas avoir besoin de mettre à niveau votre .NET Framework comme l’ ont fait les uzbones , ce qui pourrait également créer des problèmes.

J’ai eu le même problème pour mon .net framework v3.5, solution mise à niveau vers .net framework v4.5 et cela a bien fonctionné.

La définition de la propriété de l’object de dialog AutoUpgradeEnabled sur false a corrigé le problème lors de l’exécution sous Windows 7 SP1 64 bits (la solution a été compilée à l’aide de VS2008 et .net 2.0).

Ex.

 SaveFileDialog dlg = new SaveFileDialog(); dlg.AutoUpgradeEnabled = false;