J'utilise le code de MS à print a form mais il semble que le formulaire doit être visible avec un Show/ShowDialog() pour fonctionner. J'essaie d'utiliser le code pour un formulaire que je ne veux pas montrer.C# - Impression du formulaire
Des idées?
J'utilise le code de MS à print a form mais il semble que le formulaire doit être visible avec un Show/ShowDialog() pour fonctionner. J'essaie d'utiliser le code pour un formulaire que je ne veux pas montrer.C# - Impression du formulaire
Des idées?
simple est d'ouvrir juste quelque part en dehors de l'écran comme
this.Position=new Point(-100000,-100000);
impression et fermez-le.
(ne pas oublier plusieurs moniteurs, c'est pourquoi j'ai utilisé de si grands nombres).
Si vous souhaitez imprimer des données à partir du formulaire d'une manière relativement simple, vous pouvez essayer à la place. J'utilise cette méthode lorsque j'ai besoin d'imprimer quelque chose à partir d'un formulaire. Cela utilise un contrôle WebBrowser caché et fonctionne plutôt bien.
Désolé, l'exemple provient d'un projet C++, mais il est bien converti en C#.
private: System::Void printButton_Click(System::Object^ sender, System::EventArgs^ e) {
StringBuilder^ html = gcnew StringBuilder();
html->Append("<html><head></head><body>");
html->Append("<h1>Children Clocked In</h1>");
html->Append("<table>");
html->Append("<tr><td>Last Name</td><td>First Name</td><td>Classroom</td><td>Program</td><td>In Time</td></tr>");
for each (DataGridViewRow^ row in children->SelectedRows)
{
html->AppendFormat("<tr><td>{0}</td><td>{1}</td><td>{2}</td><td>{3}</td><td>{4}</td></tr>",
row->Cells[2]->Value->ToString(),
row->Cells[3]->Value->ToString(),
row->Cells[4]->Value->ToString(),
row->Cells[5]->Value->ToString(),
Convert::ToDateTime(row->Cells[6]->Value).ToString("h:mm tt"));
}
html->Append("</table>");
html->Append("</body></html>");
WebBrowser^ webBrowser = gcnew WebBrowser();
webBrowser->Visible = false;
webBrowser->Parent = this;
webBrowser->DocumentCompleted += gcnew System::Windows::Forms::WebBrowserDocumentCompletedEventHandler(this, &FormChildrenClockedIn::webBrowser1_DocumentCompleted);
webBrowser->DocumentText = html->ToString();
}
private: System::Void webBrowser1_DocumentCompleted(System::Object^ sender, System::Windows::Forms::WebBrowserDocumentCompletedEventArgs^ e) {
((WebBrowser^)sender)->ShowPrintPreviewDialog();
delete (WebBrowser^)sender;
}
Doit définir le paramètre StartPosition sur Manual, puis Location sur -100000. Merci – Jon