在运行时设置XRPictureBox的对齐方式

时间:2013-10-15 11:51:45

标签: c# winforms devexpress xtrareport

我想创建一个XtraReport Template类,它获取一个报表对象并将其转换为我们的公司设计。首先,我创建了一个ReportHeaderBand,它为Logo获取了一个XRPictureBox。如何将XRPictureBox放在ReportHeaderBand的右侧?

这就是我到目前为止所做的事情:

internal class Kopfbereich: ReportHeaderBand
    {
        /// <summary>
        /// Erstellt ein Objekt für den Kopfbereich eines Reports
        /// </summary>
        public Kopfbereich()
        {
            DruckeLogo();
        }

        private void DruckeLogo()
        {
            XRPictureBox picBox = new XRPictureBox();
            picBox.Visible = true;
            picBox.Sizing = ImageSizeMode.AutoSize;
            picBox.Image = Resources.Brillux_Logo_Reports_ohne_Text;
            this.Controls.Add(picBox);
        }
    }

    //This Method is from other class and should print my report with template
    public XtraReport DruckeMitVorlage(XtraReport report)
    {
        Kopfbereich kopfbereich = new Kopfbereich();
        report.Bands.Add(kopfbereich);
        return report;
    }

我想在运行时创建它以获取动态模板。所以设计师不是一个选择。

我尝试按照代码行在右侧设置XRPictureBox。

picBox.LocationF = new PointF(Report.PageWidth - picBox.WidthF - Report.Margins.Right.Width, 0);

但是Logo会在下一页显示一半。

1 个答案:

答案 0 :(得分:0)

我建议您将此XRPictureBox控件添加到report header band而不是this.Controls。它可以控制图片编辑在报告的顶部打印,而不是在其他页面上打印..

检查代码段:

// Check if the TopMargin band is already present in the report. 
if(Bands.GetBandByType(typeof(ReportHeaderBand)) == null) {
    // Create a new TopMargin band and add it to the report. 
    ReportHeaderBandtmBand = new ReportHeaderBand();
    Bands.Add(tmBand);

    // Create a picture object
    XRPictureBox picBox = new XRPictureBox();
    picBox.Visible = true;
    picBox.Sizing = DevExpress.XtraPrinting.ImageSizeMode.AutoSize;
    picBox.Image = Resources.Logo;
    this.Controls.Add(picBox);

    // Add the label to the ReportHeaderBand band. 
    tmBand.Controls.Add(picBox);
}

您可以使用报告对象进行控制,如下所示:

 // Place the chart onto a report footer
  rep.Bands[BandKind.ReportHeader].Controls.Add(picBox);

参考:
How to create a report dynamically in the WinForms application