2015-09-24 43 views
0

我知道我可以利用活动报告,但让我们把它作为最后的手段。活动报告上的用户控制

我有一个用户控件,我所做的只是在OnPaint方法中绘制图形(因为这是我可以让图形显示的唯一方法)。我知道活动报告是静态的,但我会喜欢它画一次。相反,我只是得到灰色框。有没有办法做到这一点,或者我坚持转换我的东西,直接在Active Reports中绘制?运行绘制图形的代码后,我尝试暂停OnPaint方法,但这并没有帮助。

回答

0

ActiveReports支持托管.net组件。无需直接在AR表面上涂漆。这不是一个理想的情况,但它应该工作。我们需要更多的细节来诊断你的用户控制不起作用的原因。你将哪一部分放入?它是绑定还是静态图形?你应该知道AR在处理时刻绘制控件,它绑定控件然后将它们绘制成它自己的格式(RDF),然后观察者只理解那种格式(想象它像一张纸)。这意味着您需要将您的控件放置在报告上并让它呈现,而不是试图在查看器中呈现它。

无论如何,有关您的控件和您使用它的报告的更多细节将有所帮助。请通过[email protected]与我们联系,我们将尽我们所能提供帮助。

感谢 http://activereports.grapecity.com

+0

好吧,我通过电子邮件发送。谢谢,我会在获取更多信息时进行更新。 – user1427105

0

与GrapeCity的工作后,我能得到它使这3名更改后的工作(我敢肯定,这是刚刚过去的事项):

  1. 切换到继承控制,而不是用户控件
  2. 推翻OnPaint方法,而不是只订阅Paint事件
  3. 使用的PaintEventArg E公司e.Graphics代替this.CreateGraphics的()

然后宣布这一切在报告中,像这样:

private void SectionReport1_ReportStart(object sender, EventArgs e) 
    { 
     GrapeCity.ActiveReports.SectionReportModel.CustomControl cc; 
     MyControl myc = new MyControl();   
     cc = new GrapeCity.ActiveReports.SectionReportModel.CustomControl(myc.GetType()); 
     cc.Location = new PointF(1f, 1f); 
     cc.Size = new SizeF(4f, 4f);    
     this.detail.Controls.Add(cc); 
    }