当前位置:编程学习 > C#/ASP.NET >>

水晶报表自定义纸张设置不生效,请大家指点

水晶报表自定义纸张设置不生效, 

报表打印窗体, 有crystalreportview 显示报表. 上有按钮 “打印” 和”打印设置”


点打印设置,弹出:
    
   选择打印机和纸张后,返回打印机名称与纸张的INDEX.
   再点打印服务器打印,结果无法按选定的纸张打印.
   主要代码如下:

打印窗体:
private static string CURRENT_PRINTER = @"Canon LBP2900";
private static string INDEX = "0";
public static string[] inputTextDataArray = new string[] { "","" };

// 打印设置函数
 private void SetPrintOptions()
  {
            PrintOptions printOptions = so2.PrintOptions;
            printOptions.PrinterName = CURRENT_PRINTER;
            printOptions.CustomPaperSource = GetSelectedPaperSource();
            printOptions.PaperOrientation = PaperOrientation.Portrait;
  }
//打印函数
        private void printReport_Click(object sender, EventArgs e)
        {
            int index = Convert.ToInt16(INDEX);
            SetPrintOptions();
            try
            {
                so2.PrintOptions.PaperSize = (CrystalDecisions.Shared.PaperSize)index;
                so2.PrintToPrinter(1,true, 0, 0);
            }
            catch (Exception ex)
            {
            }
        }



打印设置窗体:
public partial class setprint : Form
    {
        public setprint()
        {
            InitializeComponent();
            //获得打印机信息
            int k = PrinterSettings.InstalledPrinters.Count;//获取系统安装打印机总数   

            for (int i = 0; i < k; i++)
            {
                combox_print.Items.Add(PrinterSettings.InstalledPrinters[i].ToString());//获取系统安装的打印机名称   
            }
            combox_print.SelectedIndex = 0;
        }
       //选择打印机后,自动显示出他的纸张
        private void combox_print_SelectedIndexChanged(object sender, EventArgs e)
        {
            listbox_paper.Items.Clear();
            PrinterSettings set = new PrinterSettings();
            set.PrinterName = combox_print.SelectedItem.ToString();
            for (int j = 0; j < set.PaperSizes.Count; j++)
            {
                listbox_paper.Items.Add(set.PaperSizes[j].PaperName);
            }
        }
     //点确定后返回  并将打印机名称INDEX 返回给主窗体
        private void btn_ok_Click(object sender, EventArgs e)
        {
            Saleout.Report_so.inputTextDataArray[0] = combox_print.SelectedItem.ToString();
            Saleout.Report_so.inputTextDataArray[1] = listbox_paper.SelectedIndex.ToString();
            this.Close();
        }
--------------------编程问答-------------------- 在网上参考了水如烟的BLOG,http://lzmtw.cnblogs.com/archive/2006/01/19/320338.html,是VB写的,看不懂阿,好郁闷阿
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,