在VS2003/VS2005中,使用打印对话框PrintPreviewDialog类时,每次打开窗口都是处于常规状态,即Normal.用户查看预览时不是很方便,如果窗口一打开就自动按照最大化进行显示就可以了,但是PrintPreviewDialog类中的WindowState属性不可见,没办法直接去修改它.
而采用窗口打开时动态修改它的窗口位置和尺寸的方法,由于不同用户屏幕分辨率的不同,就需要动态得到这些信息,也不是很方便.因此通过设置WindowState属性是最好的方法了.
还好DotNet提供的反射,我们可以利用这个功能来实现:定义一个类.
using
System;
using
System.ComponentModel;

public
class
PrintPreviewDialogEx

...
{
public static void MakePrintPreviewDialogMaximized(PrintPreviewDialog ppd)

...{
System.Reflection.PropertyInfo[] pis=ppd.GetType().GetProperties();
for(int i=0;i<pis.Length;i++)

...{
if(pis[i].Name=="WindowState")

...{
pis[i].SetValue(ppd,FormWindowState.Maximized, null);
break;
}
}
}
}
使用时,采用如下代码:
PrintPreviewDialog pvd
=
new
PrintPreviewDialog();
pvd.Document
=
AppCfg.printData.pdoc;
PrintPreviewDialogEx.MakePrintPreviewDialogMaximized(pvd);
......
pvd.ShowDialog();
......
这样,在对话框显示时就自动按照最大化显示了.