1

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

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

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

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

编辑:忘了提,它有任何用途。我的报告都是本地报告。

4

6 回答 6

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)
于 2013-09-11T20:10:52.950 回答
2

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

于 2010-01-18T13:50:15.097 回答
2

好吧,我刚刚遇到了类似的问题;需要一个具有 0" 边距的报告,否则爆炸的东西从 2 页变为 6 页,并且它垂直拆分数据,因此页面没有意义。我不得不在打印设置中手动设置它才能打印,但是这份报告的最终目标是以 PDF 格式通过电子邮件发送给客户,你猜怎么着,当我手动设置边距并导出时,它仍然分成 6 页并被炸毁。所以冒着一切风险,我尝试了最后的最高努力来修复这该死的东西-我用写字板打开了.rdlc,奇迹的奇迹,找到了1in等。我将所有这些虫子设置为0in,保存,运行我的.net代码(2008),打开打印设置,哈利路亚,有我的 0in 设置。现在进行最高测试 - 我将其导出为 PDF,转到文件,然后是枪的儿子!甜蜜。有两页清晰干净的完美布局。宇宙中的一切都是善意的,我平静下来,让绿叶流过我,只是沉浸在如此罕见以至于有些人很少意识到的时刻——一个简单的修复。

于 2011-03-01T21:09:26.360 回答
1

查看ReportPageSettings 类,它是报表查看器控件的一部分。设置这些值看起来应该可以满足您的需求。

于 2010-01-18T13:45:10.153 回答
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)
于 2015-12-25T08:26:52.823 回答
0

此代码适用于我,以 mm 为单位的数字

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

于 2021-08-11T22:02:25.543 回答