解决.NET中打印对话框的最大化的问题

在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();
......

这样,在对话框显示时就自动按照最大化显示了.

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值