- PR -

.NET Framework2.0でPageSetupDialog表示時にCustum用紙を既定値に出来ない

1
投稿者投稿内容
さな
ベテラン
会議室デビュー日: 2004/07/27
投稿数: 59
お住まい・勤務地: 大阪・肥後橋
投稿日時: 2008-06-27 18:45
いつも、拝見させていただいてます。

.NET Framework2.0でPageSetupDialog表示時にCustum用紙を既定値にすることが出来ません。
元々は、VS.NET2003を使用し、.NET Framework1.1(SP1)で正しく動作していたのですが、VS2005(Version 8.0.50727.762(SP.050727-7600)).NET Framework2.0(Version 2.0.50727)に移行すると、動作しなくなりました。
以下に、コードを添付します。
コード:
private void button1_Click(object sender, EventArgs e)
{
	PageSetupDialog psDlg = new PageSetupDialog();		//ページ設定ダイアログ
	System.Drawing.Printing.PageSettings pageSet = new System.Drawing.Printing.PageSettings();			//ページ設定
	System.Drawing.Printing.PrinterSettings prtSet = new System.Drawing.Printing.PrinterSettings();		//プリンタ設定

	prtSet.PrinterName = @"プリンタ名"; 
	pageSet.PaperSize = GetPaperSize(prtSet, @"Custum用紙の名前");
	//pageSet.PaperSize = GetPaperSize(prtSet, "A4");
	pageSet.Landscape = true;

	psDlg.PrinterSettings = prtSet;
	psDlg.PageSettings = pageSet;
	psDlg.ShowDialog();

}
/// <summary>
/// PrinterSettingsオブジェクトのPaperSizesから指定した用紙名のPaperSizeオブジェクトを取得する。
/// </summary>
/// <param name="PrtSet">PrinterSettingsオブジェクト</param>
/// <param name="PaperName">用紙名</param>
/// <returns>取得した用紙のPaperSizeオブジェクト(該当無しの場合、null)</returns>
private static System.Drawing.Printing.PaperSize GetPaperSize(System.Drawing.Printing.PrinterSettings PrtSet, string PaperName)
{
	System.Drawing.Printing.PaperSize psGet = null;
	foreach (System.Drawing.Printing.PaperSize psWork in PrtSet.PaperSizes)
	{
		if (psWork.PaperName == PaperName)
		{
			psGet = psWork;
			break;
		}
	}
	return psGet;
}


prtSet.PrinterName = @"プリンタ名";
pageSet.PaperSize = GetPaperSize(prtSet, @"Custum用紙の名前");
部分にプリンタ名とそのプリンタに登録されているカスタム用紙名をセットします。

VS.NET2003では正しく動作するのですが、VS2005ではPaperSizesコレクションの最初の用紙が既定値になります。

また、カスタム用紙ではなく、既存用紙(たとえばA4等)を指定すると、正しく既定値になります。

.NET Framework2.0を使用するには、何かコードが足りないのでしょうか?
それとも、.NET Frameworkのバグなのでしょうか?

正しく動作するようにするための情報をお持ちの方がおられましたら、お教えください。
よろしくお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)