是否可以相对于Viewer控件(DataDynamics.ActiveReports)获取页面坐标?

时间:2014-08-01 20:52:10

标签: c# activereports

我在测试中有报告预览。我想点击控件,它将被激活。为了在报表预览上单击此控件,我将获得此控件相对于页面的坐标。为了获得控件的坐标,我使用CanvasItem.Bounds属性并将此坐标转换为像素。但是如何获取页面的坐标相对于具有控件的此页面所在的查看器? 或者也许有人知道如何让CanvasItem坐标相对于Viewer控件?

感谢您的帮助!!!

2 个答案:

答案 0 :(得分:0)

CanvasItem是一个内部类,我不建议您在应用程序中使用它。如果你只是想在控件上捕获点击,那么我认为更好更简单的方法是使用带有超链接集的TextBoxes。然后,您可以处理查看器控件的“超链接”事件,以检测基于其超链接值单击的控件。

所以我将列出步骤:

  1. 设置文本框的超链接属性(对于TextBox1为“a”,对于TextBox2为“b”)

  2. 捕获查看器的“超链接”事件,如下所示:

    private void viewer1_HyperLink(object sender, GrapeCity.ActiveReports.Viewer.Win.HyperLinkEventArgs e)
    {
        if (e.HyperLink == "a")
        {
            MessageBox.Show("TextBox1 Clicked");
        }
        else
        {
            MessageBox.Show("TextBox2 Clicked");
        }
    }
    
  3. 最后将报告分配给观众:

    private void Form1_Load(object sender, EventArgs e)
    {
        SectionReport1 rpt = new SectionReport1();
        viewer1.LoadDocument(rpt);
        viewer1.UseHyperlinkSettings = false;
    }
    

答案 1 :(得分:0)