Я создаю небольшое приложение, в котором я генерирую 12 PDF-файлов из хрустального отчета одним щелчком мыши. Каждый PDF-файл имеет разные параметры. Код работает, но я хотел бы сделать его короче, потому что он очень повторяющийся. Поскольку я новичок в программировании, я не знаю, как этого добиться.Повторяющийся код C#
Любые идеи будут оценены.
Вот код.
private void button1_Click(object sender, EventArgs e)
{
cryRpt.Load(@"\\klb-lims\Crystal\TrendFailure.rpt");
cryRpt.Load(@"\\Server\Crystal\TrendFailure.rpt");
ExportOptions CrExportOptions;
DiskFileDestinationOptions CrDiskFileDestinationOptions = new DiskFileDestinationOptions();
PdfRtfWordFormatOptions CrFormatTypeOptions = new PdfRtfWordFormatOptions();
try
{
//GENCHEM
cryRpt.SetParameterValue("AnalysisType", "GENCHEM");
CrDiskFileDestinationOptions.DiskFileName = (GENCHEM);
CrExportOptions = cryRpt.ExportOptions;
{
CrExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
CrExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
CrExportOptions.DestinationOptions = CrDiskFileDestinationOptions;
CrExportOptions.FormatOptions = CrFormatTypeOptions;
}
cryRpt.Export();
//IC
cryRpt.SetParameterValue("AnalysisType", "IC");
CrDiskFileDestinationOptions.DiskFileName = (IC);
CrExportOptions = cryRpt.ExportOptions;
{
CrExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
CrExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
CrExportOptions.DestinationOptions = CrDiskFileDestinationOptions;
CrExportOptions.FormatOptions = CrFormatTypeOptions;
}
cryRpt.Export();
//ICPMS
cryRpt.SetParameterValue("AnalysisType", "ICPMS");
CrDiskFileDestinationOptions.DiskFileName = (ICPMS);
CrExportOptions = cryRpt.ExportOptions;
{
CrExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
CrExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
CrExportOptions.DestinationOptions = CrDiskFileDestinationOptions;
CrExportOptions.FormatOptions = CrFormatTypeOptions;
}
cryRpt.Export();
//ICPOES
cryRpt.SetParameterValue("AnalysisType", "ICPOES");
CrDiskFileDestinationOptions.DiskFileName = (ICPOES);
CrExportOptions = cryRpt.ExportOptions;
{
CrExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
CrExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
CrExportOptions.DestinationOptions = CrDiskFileDestinationOptions;
CrExportOptions.FormatOptions = CrFormatTypeOptions;
}
cryRpt.Export();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
Я не включаю 13 блоков, но вы можете иметь представление о том, о чем я говорю.
Ниже приведены строки, которые я использую для сохранения файлов PDF. Параметры отчета о кристалле фиксированы.
string GENCHEM = "c:\\temp\\GENCHEM_TrendFailure.pdf";
string IC = "c:\\temp\\IC_TrendFailure.pdf";
string ICPMS = "c:\\temp\\ICPMS_TrendFailure.pdf";
string ICPOES = "c:\\temp\\ICPOES_TrendFailure.pdf";
string METALS = "c:\\temp\\METALS_TrendFailure.pdf";
string MICRO = "c:\\temp\\MICRO_TrendFailure.pdf";
string ORGANIC = "c:\\temp\\ORGANIC_TrendFailure.pdf";
string SOILPREP = "c:\\temp\\SOILPREP_TrendFailure.pdf";
string SUBOUT = "c:\\temp\\SUBOUT_TrendFailure.pdf";
string SVOC = "c:\\temp\\SVOC_TrendFailure.pdf";
string VOC = "c:\\temp\\VOC_TrendFailure.pdf";
string WASTEWATER = "c:\\temp\\WASTEWATER_TrendFailure.pdf";
переместить основной код в метод и передать не повторяющиеся элементы в качестве параметров – Plutonix