Reportviewer不可见

时间:2015-05-16 16:10:32

标签: visual-studio-2012

我正在使用Visual Studio 2013 Professional和vb.net。当我启动一个新的Windows窗体并将ReportViewer拖到空白窗体时,它不会出现在窗体上。在底部,它显示了ReportViewer1;但是,没有可见的报告查看器。这意味着我无法将查看器附加到报表或数据库。

如果我开始一个全新的项目,我可以拖动reportVierwer。这是一个很大的项目,或者我只是开始一个新的项目。

2 个答案:

答案 0 :(得分:1)

由于某种原因(在VS2015上),ReportViewer实例未添加到InitializeComponents方法内的表单的Controls集合中。

添加此行(reportViewer是ReportViewer的实例)可以解决问题:

this.Controls.Add(reportViewer);

答案 1 :(得分:0)

您可以随时手动将其添加到代码中,也可以手动编辑设计器。

将Load事件处理程序添加到表单以在Load:

上刷新报表查看器
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Me.ReportViewer1.RefreshReport()
End Sub

在设计器中创建ReportViewer实例。在InitializeComponent

Private Sub InitializeComponent()
    Me.ReportViewer1 = New Microsoft.Reporting.WinForms.ReportViewer()

    '...

    '
    'ReportViewer1
    '
    Me.ReportViewer1.Location = New System.Drawing.Point(13, 13)
    Me.ReportViewer1.Name = "ReportViewer1"
    Me.ReportViewer1.Size = New System.Drawing.Size(396, 246)
    Me.ReportViewer1.TabIndex = 0

    '...
End Sub
Friend WithEvents ReportViewer1 As Microsoft.Reporting.WinForms.ReportViewer

这不是理想的解决方案。添加到主代码时,您将混合表示和逻辑。修改设计器代码时,存在被覆盖的风险。

也许一些改进是创建另一个Form部分类,您可以在其中放置上述代码。例如,作为LoadReportViewer方法,然后从您的代码中调用该方法。这样,您就不会将设计器代码与逻辑混合在一起,并且您不会冒被设计者删除更改的风险。