2016-04-03 13 views
2

Ich entwickle eine C# -Anwendung mit Visual Studio 2015 es hat 2 Formulare, auf form1 Ich habe eine Schaltfläche, die beim Klicken zeigt Form2, was ich jetzt tun möchte ist print form2 nachdem es voll geladen hat, verwende ich die printform control auf form2, dies zu tun, wenn ich dies auf die form_load ereignis druckt es eine leere seite und zeigt dann das formular, ich habe auch versucht mit es auf form_Show, aber das druckt eine Box wo die Elemente sind aber nicht das Element selbst, als ob sie nicht fertig geladen haben, gibt es wahrscheinlich eine bessere Möglichkeit, dies zu tun aber ich bin neu in C# so noch learni ngÜberprüfen Sie, ob alle Elemente in einem Formular vollständig geladen sind C#

Unten ist ein Beispiel für den Code, den ich auf form2 haben zu früh

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace MyApp 
{ 
    public partial class Form2: Form 
    { 
     public Form2() 
     { 
      InitializeComponent(); 
     } 

     private void Form2_Load(object sender, EventArgs e) 
     { 

      this.Shown += new System.EventHandler(this.Form2_Shown); 
     } 

     private void Form2_Shown(object sender, EventArgs e) 
     { 
      printForm.Print(); 
     } 
    } 
} 
+3

überprüfen mit dem MSDN Beispiel: https://msdn.microsoft.com/en-us/library/aa287529(VS.71).aspx – Steve

+0

Dankten @Steve ich in sie aussehen :) – Malcolm

Antwort

4

Das Gezeigte Ereignis feuert ein klein wenig. Der Rahmen und der Hintergrund des Formulars sind gemalt, aber der Rest folgt später. Malen ist eine Aufgabe mit niedriger Priorität, die nur auftritt, wenn nichts anderes getan werden muss. Das Abfeuern des Ereignisses wird zuerst ausgelöst.

Die Problemumgehung ist einfach, fragen Sie das Formular, um die Aktualisierung selbst abzuschließen, indem Sie die Update() - Methode aufrufen. Fix:

private void Form2_Shown(object sender, EventArgs e) 
    { 
     this.Update(); 
     printForm.Print(); 
    } 
+0

Danke @Hans Passant, das funktioniert :) Problem sortiert Danke nochmal – Malcolm

Verwandte Themen