我想为程序加一个水晶报表打印预览功能。
我的理解是:
   1.为主窗口Form1加一个子窗口Form2
   2.把crystalReportViewer1加入Form2中,并设置数据源:
          CrystalReport1 myrpt=new CrystalReport1();
 myrpt.SetDataSource(dataset1);
   3.Form1中的打印预览按钮显示Form2窗口:
          Form2 f2=new Form2();
 f2.Owner=this;
 f2.Show();不知我的理解是否正确,另外,Form1中的dataset1如何传到Form2中?我想把dataset1设置为public
那么,DataSet dataset1=new DataSet()这句怎么改???

解决方案 »

  1.   

    水晶报表自身就有预览功能Form1中的dataset1如何传到Form2中?我想把dataset1设置为public
    那么,DataSet dataset1=new DataSet()这句怎么改???可以通过Form2的构造函数来传参数。
    如:
     public Form2(DataSet ds)
    {}
      

  2.   

    参考:
    打印端:(Form2)
    public partial class TicketDetailPrint : Form
        {
            public CRTicketDetail crtd = new CRTicketDetail();
            public TicketDetailPrint(DsPrintOfVender ds)
            {
                crtd.SetDataSource(ds);
                InitializeComponent();
                crystalReportViewer1.ReportSource = crtd;
            }
        }调用端:(Form1)
    private void buttonprint_Click(object sender, EventArgs e)
            {
                try
                {
                    TicketDetailPrint print = new TicketDetailPrint(dsprint);//dsprint已经定义并赋值
                    print.ShowDialog();
                    print.Dispose();
                }
                catch (Exception exp)
                {
                    MessageBox.Show(exp.Message);
                }
            }