一个打印程序,使用水晶报表,printtoprinter(1,false,0,0),这行代码在我电脑上运行没问题(winxp,vs2010,水晶报表13 for vs2010),在我电脑可以正常打印,程序编译后放到服务器上(win2008 sp1 32位),程序运行没问题,就是最后一步打印到打印机时程序失去响应,后我在服务器上安装c#2010 express版调试程序,在运行到以上代码时提示:“尝试读取或写入受保护的内存"等信息,执行不了,我查看打印机,发现打印机中已有打印任务,不过也是不打印。
服务器已经正常安装了水晶报表runtime13.
代码如下:
            PrintDialog print = new PrintDialog();
            if (print.ShowDialog () == System.Windows.Forms.DialogResult.Cancel) {
                return;
            }
            printname = print.PrinterSettings.PrinterName;// printDialog.PrinterSettings.PrinterName;
            
            if (printname.Length > 0)
            {
                mo1.PrintOptions.PrinterName = printname;
                //设置页面
                CrystalDecisions.Shared.PageMargins margins = new CrystalDecisions.Shared.PageMargins();
                margins.rightMargin = 3;
                mo1.PrintOptions.ApplyPageMargins(margins);
                mo1.PrintToPrinter(1, false, 0, 0);  //在这里出现错误,在开发的电脑上运行正常            
            }不知道是什么原因造成错误?

解决方案 »

  1.   

    你的程序是Web程序还是Winform程序?
    如果是Web程序,你的代码是在服务器端执行的,客户端怎么能看到打印的东西呢?
      

  2.   

    软件是放在服务器上,客户端电脑都是通过远程桌面连接到服务器上运行程序,现在在服务器上测试时就出现此问题,winform
      

  3.   

    CrystalDecisions.Shared.PageMargins margins = mo1.PrintOptions.PageMargins;
    试试
    看例子,
    http://msdn.microsoft.com/zh-cn/library/ms226031(VS.80).aspx也没有什么错误。
    这种错误不一定是代码导致的,可能跟系统或者安装的某些软件冲突导致有关系。