水晶报表自定义纸张设置不生效,请大家指点
水晶报表自定义纸张设置不生效,报表打印窗体, 有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#