时间不多,先说两句!
1. 用 Crystal Report Viewer 控件
2. 设计时手动对齐,或者编程实现对齐:
   1) 假设报表文件名为 crReport,要对齐的水晶报表的文本对象名为 Text1;
   2) crReport report = new crReport(); 
   3) object reportObject = report.DetailSection1.ReportObjects("Text1");
   4) reportObject.Top = 300;
   5) reportObject.Left = 300;
   6) reportObject.Width = 500;
   7) reportObject.Height = 20;通过 Top、Left、Width、Height 等属性即可设置水晶报表对象的位置,对齐即可编程实现。

解决方案 »

  1.   

    谢ET2004(ET2004)的回答!
    但是我是用了Crystal Report Viewer 控件!
    但是不知如何实现按钮来预览和打印
      

  2.   

    我也不太会用,但我是得放一个ReportDocumnet的组件,然后在Crystal Report Viewer的databindings的属性里将page和ReportSource绑定好,就可以看到报表的预览了,
    代码页要在page_load中写CrystalReportViewer1.databind()
      

  3.   

    假设报表名为 crReport, 预览窗口放一个 Crystal Report Viewer, Dock=Fill
    预览报表代码如下:(打印按钮已经包含在 Crystal Report Viewer 的工具栏了)private void fmPreview_Load(...)
    {
        crReport report = new crReport();
        this.crystalReportViewer1.ReportSource = report;
    }打印:
    private void PrintReport()
    {
        crReport report = new crReport();
        report.PrintToPrinter(1, true, 0, 0);
    }PrintToPrinter() 方法的详细说明见 MSDN:
    ms-help://MS.MSDNQTR.2003FEB.2052/crystlrf/html/crlrfreportdocumentclassprinttoprintermethodtopic.htm
      

  4.   

    预览和打印之前要先设置数据源// 创建数据集实例
    MyDataSet ds = new MyDataSet();
    // TODO: 填充数据集...// 创建报表实例
    crReport report = new crReport();// 设置报表数据源
    report.SetDataSrouce(ds);// 打印报表
    report.PrintToPrinter(...);
      

  5.   

    再谢ET2004(ET2004)
    能否再问,这样可以弹出打印设置的窗口吗
      

  6.   

    无论是使用 Crystal Report Viewer 还是使用 ReportDocument.PrintToPrinter() 方法,都不会出现页面设置对话框。但可以构造一个 PageSetupDialog 实例显示打印设置对话框,取得用户选择的打印选项后,访问 ReportDocument.PrintOptions 属性修改各项打印设置。