我已经从 C# 动态创建了一个报告并成功完成,现在的问题是它是右对齐的,我希望将它放在中心。怎么做 ?
我的代码在这里:
private void ShowReport()
{
ReportDataSource rds = new ReportDataSource("MyData", m_dataSet.Tables[0]);
this.reportViewer1.LocalReport.DataSources.Add(rds);
this.reportViewer1.RefreshReport();
this.reportViewer1.LocalReport.LoadReportDefinition(m_rdl);
reportViewer1.LocalReport.GetDefaultPageSettings().Margins.Right = 125; //Has no effect
this.reportViewer1.RefreshReport();
}
我也尝试过:
public static Rdl.Report CreateReport(string groupBy)
{
Rdl.Report report = new Rdl.Report();
try
{
report.Items = new object[]
{
CreateDataSources(),
CreateHeader(groupBy),
CreateBody(groupBy),
CreateDataSets(),
"9.5in",
"1.5in",
};
report.ItemsElementName = new Rdl.ItemsChoiceType37[]
{
Rdl.ItemsChoiceType37.DataSources,
Rdl.ItemsChoiceType37.PageHeader,
Rdl.ItemsChoiceType37.Body,
Rdl.ItemsChoiceType37.DataSets,
Rdl.ItemsChoiceType37.Width,
Rdl.ItemsChoiceType37.LeftMargin,
};
}
catch (Exception ex) { }
return report;
}
请注意,我不必设置reportviewer的对齐方式,我必须在reportviewer上设置report的对齐方式。
无需计算文档和工作区域大小,我发现 ReportViewer 的以下属性即可解决问题。
将此代码放入表单的初始化方法中。
ReportViewer1.SetDisplayMode(DisplayMode.PrintLayout);
ReportViewer1.ZoomMode = ZoomMode.PageWidth;
这会将文档居中对齐,并使其与表单的尺寸完美契合。
我不确定是否可以使用任何类型的 ReportViewer 控件属性。大多数情况下,我只是目视它,但如果精度对您来说是首要任务:我之前使用过一些代码来实现这一点。
如果愿意的话,可以提供解决方法;
private void ReportViewer1_Resize(object sender, EventArgs e)
{
// Center report
ReportPageSettings rps = ReportViewer1.LocalReport.GetDefaultPageSettings();
if (ReportViewer1.ParentForm.Width > rps.PaperSize.Width)
{
int hPad = (ReportViewer1.ParentForm.Width - rps.PaperSize.Width) / 2;
ReportViewer1.Padding = new Padding(hPad, 1, hPad, 1);
}
编辑:顺便说一句,您基本上可以使用大多数方法的代码。让我知道它是否适合您。
Edit#2:我也不确定你是否在谈论表格,或者你想要居中的 ReportViewer 本身。希望它对你有用。
我设置了这个但不起作用。通过 Windows 10
ReportViewer1.SetDisplayMode(DisplayMode.PrintLayout);
ReportViewer1.ZoomMode = ZoomMode.PageWidth;