WPF PrintDialog

      在〈WPF PrintDialog〉中尚無留言

C#的列印管理非常強大, 因此亦難以學習. 且這部份的教學大都混雜亂跳, 沒一組織性. 所以開設此目錄慢慢的足一說明

Windows Form 常用的列印物件有System.Windows.Forms.PrintDialog, PrintDocument, PrintPreviewDialog.

WPF常用的列印物件有System.Windows.Controls.PrintDialog, XpsDocument, FlowDocument, DocumentViewer等.

本篇以WPF 列印為主, 對於Windows Form的使用不作說明.

加入參考

進行列印工作前, 需加入需要的SDK. 請於專案按右鍵/加入/參考/組件, 將ReachFramework及System.Printing打勾

PrintDialog

PrintDialog是C#直接下達指令叫印表機開始動作的最基本物件. 任何複雜的設計, 如DocumentViewer, FlowDocument, 都會調用此物件進行列印, 所以要先了解此物件的相關特性.

以下是一個簡單的例子, 利用 PrintDialog的PrintVisual()方法, 就可以把WPF裏的所有元件印出, 包含了Grid, DataGrid, Canvas, Button..等等. 如下代碼, 把DataGrid裏的資料硬拷列印出來.

此例中因DataGrid裏的資料送到PrintDialog後, 還需經由網路取得資料庫及照片, 這需漫長的時間才能完成, 故在文件成型時, 因資料當未download完成而有誤, 且無法列印多頁的完整資料. 這些問題都將會在後續的討論中解決.

private void btnPrint_Click(object sender, RoutedEventArgs e)
{
	PrintDialog dialog = new PrintDialog();
	dialog.PageRangeSelection = PageRangeSelection.AllPages;
	dialog.UserPageRangeEnabled = true;

	if (dialog.ShowDialog() == true)
	{
		dialog.PrintVisual(grid, "test");
	}
}

print_dialog

print_1

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *