如题:小弟新手,请大家多多关照;
以前写代码的时候 是获取打印机默认纸张大小,现在发现那个默认打印机纸张大小还是不能满足一些要求,下面是 获取打印机默认纸张大小的代码PrintDialog BS = new PrintDialog();
int x = BS.PrinterSettings.DefaultPageSettings.PaperSize.Width;//打印机默认纸张大小
int y = BS.PrinterSettings.DefaultPageSettings.PaperSize.Height;下午查了很久MSDN 没有找到 ,希望有知道的大侠给个提示,小弟不胜感激!

解决方案 »

  1.   

    PrintDialog中有一个document对象
    你去取document.DefaultPagesSettings的值应该就是当前选择的那个大小了
    这个document也是public的应该能直接取得,你试试看
      

  2.   


    您是说这个 类 么?System.Drawing.Printing.PrintDocument ,我先去试试,希望能解决 先谢谢你了
      

  3.   

    谢谢 谢谢这个我试了 一直没有找到这个怎么用 怎么一直报错啊?....
    System.Drawing.Printing.PaperSize 这个获取到的 两个 0 ;郁闷了....
    System.Drawing.Printing.PreviewPageInfo 类 这个有个PhysicalSize 我怎么测试的也是0 ?是不是我哪里写错了?
    如果大侠来了 请指导一下小弟
      

  4.   

    PrintDialog BS = new PrintDialog();
    这个对象有一个Document对象
    你在打开的时候需要设置一下这个document
    BS.Document = this.Document;
    当印刷画面关闭的时候你也是通过BS.Document来拿到你在印刷画面设置的页面大小
    比如说BS.Document.DefaultPageSettings.PrinterSettings.PrinterName
    你看看这个名字是不是你当时选择的
    我当时因为一些其他需求是先取得名字随后通过名字来遍历选择打印机的纸张列表
    foreach(PaperSize ps in this.Document.DefaultPageSettings.PrinterSettings.PaperSizes)
    随后找到匹配得size
      

  5.   

    这个无法设置, 你只能去 手动改 打印机的配置信息区。因为 API 那里是一个枚举类。你改不了的。
      

  6.   

    测试了 上百行代码,始终觉得通过匹配来获取太麻烦,下面是坑了半天的MSDN写出来的,看来还是我基础太差了啊......this.printDocument1.PrinterSettings.PrinterName = stringBud.ToString();//这里是设置打印机名字喔,我是获取自己的配置文件里的名字
                    pageSetupDialog1.Document = this.printDocument1;
                    if (DialogResult.OK == pageSetupDialog1.ShowDialog())
                    {
                        PaperSize gg = new PaperSize();
                        gg = printDocument1.DefaultPageSettings.PaperSize;
                        x = gg.Width;//获取页面设置的纸张尺寸
                        y = gg.Height;
                    }