C# 使用Winforms DevXpress在XtraReports C.Net中使用报表查看器?

C# 使用Winforms DevXpress在XtraReports C.Net中使用报表查看器?,c#,winforms,devexpress,xtrareport,C#,Winforms,Devexpress,Xtrareport,嗨,我用XtraReports创建了三个报告。我可以使用此代码在按钮单击中查看它 xtrareport1 report = new xtrareport1 (Convert.ToInt32(TXE_CompanyId.Text)); ReportPrintTool tool = new ReportPrintTool(report); tool.ShowPreview(); 我需要在LookupEdit中显示这三个报告名称,用户选择报告意味着需要在PrintControl1中显示预览?如

嗨,我用XtraReports创建了三个报告。我可以使用此代码在按钮单击中查看它

 xtrareport1 report = new xtrareport1 (Convert.ToInt32(TXE_CompanyId.Text));
 ReportPrintTool tool = new ReportPrintTool(report);
 tool.ShowPreview();

我需要在LookupEdit中显示这三个报告名称,用户选择报告意味着需要在PrintControl1中显示预览?如何执行此操作?

如果您希望获取项目中的所有报告,则可以使用DevExpress提供的:

您可以使用Assembly.GetExecutionGassembly.GetTypes方法 获取程序集中定义的所有类。然后你可以循环通过 查找从XtraReport类派生的类的列表。创造 要创建新实例,请使用Activator.CreateInstance方法

以下是实施示例:

public Form1()
{
    InitializeComponent();

    var reports = new List<Tuple<string, Type>>();

    foreach (var type in Assembly.GetExecutingAssembly().GetTypes())
        if (type.IsSubclassOf(typeof(XtraReport)))
            reports.Add(new Tuple<string, Type>(type.Name, type));

    lookUpEdit1.Properties.DataSource = reports;
    lookUpEdit1.Properties.DisplayMember = "Item1";
    lookUpEdit1.Properties.ValueMember = "Item2";
    lookUpEdit1.Properties.Columns.Add(new LookUpColumnInfo("Item1","Report"));
}

private void simpleButton1_Click(object sender, EventArgs e)
{
    var value = lookUpEdit1.EditValue;

    if (value == null)
        return;

    var report = (XtraReport)Activator.CreateInstance((Type)value);

    var tool = new ReportPrintTool(report);
    tool.ShowPreview();
}