2012-04-05 12 views
4

Das ist sehr merkwürdig. Ich hatte dieses Problem nie mit ShowDialog in C#. Aus irgendeinem seltsamen Grund, wenn der für 64-Bit-Betriebssystem entwickelte Code versucht, den Druckerdialog zu zeigen, tut er es nie und das DialogResult ist "None". Ich habe es debuggt, indem ich durch jede Linie gegangen bin und keine Hinweise gesehen habe. Ich habe den Namespace überprüft und festgestellt, dass ich die richtigen Referenzen gesetzt:ShowDialog() erhält kein DialogResult

using System.IO; 
using System.Windows.Forms; 

Hier ist der Code:

private void printToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     printDoc.DefaultPageSettings = pgSettings; 
     PrintDialog dlg = new PrintDialog(); 
     dlg.Document = printDoc; 
     if (dlg.ShowDialog() == DialogResult.OK) 
     { 
      printDoc.Print(); 
     } 
    } 

Der exakt gleiche Code, in einer fast identischen Version für 32-Bit-Maschinen, hat kein Problem . Der Dialog wird angezeigt, der Benutzer wählt einen Drucker aus, drückt OK und die Aufgabe ist abgeschlossen.

In der 64-Bit-Version funktioniert ShowDialog() nicht für PrintDialog(), funktioniert aber für PrintPreviewDialog()!

Alle Ideen würden sehr geschätzt werden!

Antwort

1

Ich denke, das an anderer Stelle beantwortet wurde:

http://social.msdn.microsoft.com/Forums/en-US/netfx64bit/thread/a707d202-1a8b-43b1-9fff-08aa7ceb200a/

Versuchen Sie, USEExDialog = True - Es sollte funktionieren.

+1

tatsächlich, die auf der Seite, mit der Sie verknüpften, als korrekt gekennzeichnete Antwort sagt, für 64-Bit zu kompilieren. –

+0

Danke, das stimmt, ich war fehlgeleitet von den Stimmen. @ user1252604 Ich hoffe, Sie haben dies bemerkt und können uns wissen lassen, was für Sie funktioniert hat. – ericosg

+0

Danke für den Link! Ich habe dlg.UseEXDialog = true eingefügt; vor dem dlg.ShowDialog() und es hat geklappt !!! Ich schätze deine Hilfe sehr!!! - Bob T. –

Verwandte Themen