2013-10-11 77 views
2

我想從datagridview中打印選定的文件。該文件位置保存在數據庫中。現在在打印之前,我想將「頁數爲&的頁數」傳遞給PrintDialog。我能夠將這些值傳遞給PrintDialog,但它不起作用,並且所有頁面都正在打印並且只有一次。我甚至在網上搜索了很多東西,但無法解決這個問題。PrintDialog.PrinterSettings不起作用

請通過選擇所有頁面選項或將值傳遞給FromPage和ToPage來幫助我打印'n'no副本。我的代碼是:

//string ASSIGNMENT_PATH = dataGridView1.Rows[k].Cells[2].Value.ToString(); 
string ASSIGNMENT_PATH = "@C:\test.docx"; 

if (!File.Exists(ASSIGNMENT_PATH)) 
{ 
    MessageBox.Show("No exceptional file created by application till now ."); 
} 
else 
{ 
    short noC = Convert.ToInt16(txtNumOfCopies.Text); 
    short fP = Convert.ToInt16(txtFromPage.Text); 
    short tP = Convert.ToInt16(txtToPage.Text); 

    PrintDialog dialog = new PrintDialog(); 
    dialog.AllowSomePages = true; 
    dialog.PrinterSettings.FromPage = fP; 
    dialog.PrinterSettings.ToPage = tP; 
    dialog.PrinterSettings.Copies = noC; 

    DialogResult dialogResult = dialog.ShowDialog(this); 

    if (dialogResult == DialogResult.Cancel) 
    { 
     this.Close(); 
    } 
    if (dialogResult == DialogResult.OK) 
    { 
     ProcessStartInfo info = new ProcessStartInfo(ASSIGNMENT_PATH); 
     info.Verb = "PrintTo"; 
     info.Arguments = "\"" + printDialog1.PrinterSettings.PrinterName + "\""; 
     info.CreateNoWindow = true; 
     info.WindowStyle = ProcessWindowStyle.Hidden; 
     Process.Start(info); 
    } 
} 
+0

@Stanislav Ageyev是正確的,你應該使用'PrintDocument'對象或shell命令'printto'。沒有任何意外,因爲你使用了shell命令而打印了所有頁面。你不能將你的'PrintDialog'對象的任何參數傳遞給shell。據我所知你想從datagrid中選擇打印文件,所以請考慮通過'PrintDocument'編寫你自己的打印代碼的方法。如果你想打印一些特定的文件,如'Word,Excel',請考慮使用Office.Interop。 – Alezis

+0

@Alezis我在寫這段代碼時可能是錯誤的,但是可以通過提供正確的代碼來幫助我,或者請編輯我的代碼並使其正確。 – sachin

+0

我不知道你想要打印什麼文件類型。在你的情況下,當用戶可以調整頁面範圍,我建議看看這裏http://msdn.microsoft.com/en-us/library/system.drawing.printing.printdocument.aspx。向下滾動,你會看到代碼的例子。這是方法1.我認爲,通過'print'或'printto'(方法2)命令打印不適合你,因爲我不記得任何參數如何尋找頁面範圍或副本數量。 – Alezis

回答

0

在此代碼中,您使用2種打印方法。

  1. 第一種方法,用PrintDialog類,它不是在你的情況工作,因爲你必須設置文檔屬性。

  2. 第二種方法,使用Process類和所有頁面打印,因爲您在參數中發送打印機整個文件。打印的DataGridView http://www.codeproject.com/Articles/28046/Printing-of-DataGridView

它`例如或者你也可以試試這個How to print values from a DataGridView control

+0

我正在使用PrintDialog顯示對話框並設置打印機設置。並處理以打印選定的文件。以及我不想打印DataGridView我想打印其路徑顯示在DataGridView中的文件。或者說ASSIGNMENT_PATH包含文件的路徑。我想用我的條件打印該文件。 – sachin