MS의 코드를 print a form에서 사용하고 있지만 Show/ShowDialog()를 사용하여 양식을 표시해야하는 것처럼 보입니다.양식 인쇄
표시하고 싶지 않은 양식의 코드를 사용하려고합니다.
아이디어가 있으십니까?
MS의 코드를 print a form에서 사용하고 있지만 Show/ShowDialog()를 사용하여 양식을 표시해야하는 것처럼 보입니다.양식 인쇄
표시하고 싶지 않은 양식의 코드를 사용하려고합니다.
아이디어가 있으십니까?
가장 간단한 방법은
this.Position=new Point(-100000,-100000);
인쇄와 같은 화면 바깥 어딘가에을 열고 닫습니다하는 것입니다.
(여러 대의 모니터를 잊지 마세요. 큰 숫자를 사용하는 이유입니다.)
비교적 간단한 방법으로 양식의 데이터를 인쇄하려면이 방법을 시도하십시오. 양식에서 무언가를 인쇄해야 할 때이 방법을 사용합니다. 이것은 숨겨진 WebBrowser 컨트롤을 사용하고 꽤 잘 작동합니다.
죄송합니다,이 예제는 C++ 프로젝트에서 왔지만 멋지게 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;
}
StartPosition을 Manual로 설정하고 Location을 -100000으로 설정해야했습니다. 감사 – Jon