以编程方式在报表查看器控件中设置边距

时间:2010-01-18 13:34:54

标签: vb.net .net-2.0 reportviewer margins

在我们的应用程序中,我们有一些报告需要非常具体的边距,这取决于用户拥有的打印机。它用于打印到预先格式化的纸张中,并使用空白来填充,并且根据打印机的不同,打印会有一定的余量。更糟糕的是,我们实际上并没有控制使用什么打印机,因为它不是内部应用程序。

我能想到的唯一解决方案是让用户以某种方式配置边距。我虽然可以像在数据源和实际报告中那样用dinamycally改变报告边距(我有一个用于显示我的应用程序的每个报告的控件,它可以正常工作),但我似乎无法找到该死的属性这样做。报表查看器上有一个margin属性,但它适用于表单显示,因此不会删除它。

有谁知道怎么做。我想要做的是在用户加载报告之前定义边距,即当他点击报告按钮时,我加载报告,设置边距(反之亦然),然后显示它。

在有人提到它之前,我知道用户可以在加载报告后更改页面设置以满足他的需要,但这有两个drawbakcs。第一个是它每次都没有保存,我需要它是“可保存的”和用户。第二个是当区域设置未设置为预期时,报表查看器似乎有一些错误,我们无法强制用户更改其设置以容纳一个应用程序。

谢谢。

Eidt:忘记提及,这是有用的。我的报告都是本地报道。

6 个答案:

答案 0 :(得分:3)

    'creates a new page setting
    Dim instance As New PageSettings()
    'create the new margin values (left,right,top,bottom)
    Dim value As New Margins(0, 0, 0, 0)
    'gives your new pagesetting a value
    instance.Margins = value

    'report viewer now sets your margins
    ReportViewer1.SetPageSettings(instance)

答案 1 :(得分:2)

你不能直接这样做。尝试使用报告参数控制报告中的边距。

答案 2 :(得分:2)

嗯,我刚遇到类似的问题;需要一个报告有0“边距,否则爆炸的东西从2页到6,它将数据垂直分割,所以页面没有任何意义。我不得不在打印设置中手动设置打印,但是这份报告的最终目标是以PDF格式通过电子邮件发送给客户,并猜测,当我手动设置边距并导出时,它仍会分成6页并被轰炸。所以冒着一切危险,我尝试了最后一次努力修复这个爆炸的东西 - 我用字垫打开了.rdlc,奇迹的奇迹,找到了1英寸等等。我把所有那些bugger设置为0in,保存,运行我的.net代码(2008),打开打印设置,哈利路亚,我的0in设置。现在进行最高级别的测试 - 我将其导出为PDF格式,然后输入文件,以及枪支之子!甜蜜。有两个清晰干净的完美布局页面。所有这些都在宇宙中是有益的,我平静下来,让midiclorians流过我,只是沉浸在一个非常罕见的时刻,很少有人意识到 - 简单的修复。

答案 3 :(得分:1)

查看报告查看器控件的ReportPageSettings class部分。设置这些值看起来应该可以满足您的需求。

答案 4 :(得分:0)

更多设置;

        Dim myPageSettings As New PageSettings()
        myPageSettings.Margins = New Margins(0, 0, 0 , 0)
        Dim paperSize As PaperSize = New PaperSize()
        'ToDo: update with the PaperKind 
        'that your printer uses
        paperSize.RawKind = PaperKind.A4
        ' paperSize.RawKind = System.Drawing.Printing.PaperKind.A4
        myPageSettings.PaperSize = paperSize
        'False for "Portrait"
        'True for "Landscape"
        myPageSettings.Landscape = False

        'report viewer now sets your margins
        ReportViewer1.SetPageSettings(myPageSettings)

答案 5 :(得分:0)

此代码对我有用,以毫米为单位的数字

Dim newPageSettings As New System.Drawing.Printing.PageSettings
newPageSettings.Margins = New System.Drawing.Printing.Margins(50, 100, 45, 45)
ReportViewer1.SetPageSettings(newPageSettings)

我正在使用 vb.net 2013