2016-08-30 43 views
1

我對PageSetupDialog有這個奇怪的問題。用戶從組合框中選擇「頁面大小」(A4,A5,B5等)後,我保存PaperSize.RawKind供以後使用,所以當用戶返回到PageSetupDialog時,它會記住以前用戶選擇的「頁面大小」。PageSetupDialog - 保存並加載自定義頁面大小問題

如果用戶選擇了不在PageKind(又名自定義類型,如'B5(ISO)')枚舉類型的頁面大小,那麼在用戶返回後,「頁面大小」不會再自動在組合框中選擇「頁面設置」對話框,但只顯示默認的紙張大小:「Letter」。只有PageKind Enum自動在「紙張大小」的組合框中被選中。

要選擇紙張大小我可以這樣做:

int MyLastPaperSize=5; 
dlg.PageSettings.PaperSize.RawKind= MyLastPaperSize; 

enter image description here

這是枚舉列表:https://msdn.microsoft.com/en-us/library/system.drawing.printing.papersize.rawkind(v=vs.110).aspx

使用框架4.0和C#。任何幫助表示讚賞。嘗試了很多方法,無法正常工作。

回答

0

僅設置PaperSize.RawKind確實不會恢復以前(或初始)「尺寸」。

保存完整PageSettings將恢復一切,包括「大小」:再次

PageSettings _settings = new PageSettings(); 

void button1_Click(object sender, EventArgs e) 
{ 
    var dialog = new PageSetupDialog(); 
    dialog.PageSettings = _settings; 
    dialog.ShowDialog(); 
    _settings = dialog.PageSettings; 
} 

點擊按鈕,從前面所示的對話框將恢復設置。

我有一個奇怪的問題,當它不起作用,改變其他屬性(例如邊距)暫時似乎爲我解決它。無法再現它,但可能值得注意。

+0

感謝您的回覆。還沒有嘗試過,因爲我需要一種方法來保存PageSettings。目前我只是將PaperSize,Orientation和邊界參數分別保存到Resources.rsx文件中。 – Dror

+0

無論如何,我試着保存整個printdocument(包括PageSettings)並將其發回,但仍然給了我相同的結果。不適用於自定義種類「紙張大小」,總是在組合框中顯示「Letter」字樣。 – Dror

+0

請注意,只有在將紙張大小種類(PaperSize.Kind)設置爲「custom」時纔會發生這種情況。如果您可以請重新檢查「Paper Size」屬性是否在選擇PaperSize時恢復爲PaperSize.Kind ='custom' – Dror