2010-12-07 30 views
1

Ich verwende PrintDialog in meiner Desktop-Anwendung. Wenn es von Button oder vom Kontextmenü aufgerufen wird, funktioniert es gut. Aber wenn ich auf den Tooltip-Knopf zum Aufruf des PrintDialogs klicke, obwohl das Printdialog-Fenster aktiv ist, bekomme ich nicht den Fokus auf den Druckknopf. Ich muss zweimal klicken, um den Ausdruck zu erhalten.Drucken Dialog Fokus Ausgabe

Die Lösung, die ich bekommen habe, ist BeginInvoke mit Delegaten zu Async aufrufen und jetzt bin ich in der Lage, den Fokus mit dem folgenden Code zu bekommen.

ShowThePrintDialog printD = neu ShowThePrintDialog (p.ShowDialog); this.BeginInvoke (printD);

Ich möchte die DialogResult erfassen und weiter auf der Grundlage der Schaltfläche auf printdialog klicken.

Kann mir jemand eine Idee geben, wie man das DialogResult während der Verwendung von BeginInvoke aufnimmt?

Raman

Antwort

1

Der Printdialog erhalten nicht den Fokus, da die toolstripbuttons Click-Ereignis nicht beendet. Dies kann mit einem Timer gelöst werden:

private void toolStripButtonPrint1_Click(object sender, EventArgs e) 
{ 
    timerPrint1.Start(); 
} 

private void timer1_Tick(object sender, EventArgs e) 
{ 
    timerPrint1.Stop(); 
    if (printDialog1.ShowDialog() == DialogResult.OK) 
    { 
     // do your stuf 
    } 
} 
Verwandte Themen