private void CreateReportViewer() { Rpt = new myReport(); #region Закомментировал Лавров В.В. Подготовка данных для вывода в отчет //// Исходные данные для отчета //List<cReportList> RepListInput = new List<cReportList>(); //RepListInput.Add(new cReportList("Температура воздуха на выходе из рекуператора, °C", ML.tв2.ToString())); //RepListInput.Add(new cReportList("Температура воздуха на входе в рекуператор, °C", ML.tв1.ToString())); //RepListInput.Add(new cReportList("Температура продуктов сгорания перед рекуператором, °C", ML.tд1.ToString())); //RepListInput.Add(new cReportList("Расход воздуха, м3/с", ML.Vв.ToString())); //RepListInput.Add(new cReportList("Расход продуктов сгорания, м3/с", ML.Vд.ToString())); //RepListInput.Add(new cReportList("Количество вещества, %", ML.СO2.ToString())); //RepListInput.Add(new cReportList("Количество вещества, %", ML.H2O.ToString())); //RepListInput.Add(new cReportList("Поправка на длину канала для Крек", ML.Kl.ToString())); //RepListInput.Add(new cReportList("Коэффициент излучения АЧТ, Вт/(м2*К4)", ML.Co.ToString())); //RepListInput.Add(new cReportList("Поправка для Крек", ML.Ки.ToString())); //RepListInput.Add(new cReportList("Эмпирический коэффициент для воздуха 1", ML.A.ToString())); //RepListInput.Add(new cReportList("Эмпирический коэффициент для воздуха 2", ML.n.ToString())); //RepListInput.Add(new cReportList("Эмпирический коэффициент для воздуха 3", ML.m.ToString())); //RepListInput.Add(new cReportList("Эмпирический коэффициент для продуктов сгорания 1", ML.A1.ToString())); //RepListInput.Add(new cReportList("Эмпирический коэффициент для продуктов сгорания 2", ML.n1.ToString())); //RepListInput.Add(new cReportList("Эмпирический коэффициент для продуктов сгорания 3", ML.m1.ToString())); //RepListInput.Add(new cReportList("Коэффициент теплопроводности 1, Вт/(м3*оС)", ML.λ.ToString())); //RepListInput.Add(new cReportList("Коэффициент кинематической вязкости 1, м2/с", ML.ν10.ToString())); //RepListInput.Add(new cReportList("Число Прандтля 1", ML.Pr.ToString())); //RepListInput.Add(new cReportList("Коэффициент кинематической вязкости 2, м2/с", ML.ν_10.ToString())); //RepListInput.Add(new cReportList("Число Прандтля 2", ML.Pr1.ToString())); //RepListInput.Add(new cReportList("Коэффициент теплопроводности 2, Вт/(м3*оС)", ML.λ1.ToString())); //RepListInput.Add(new cReportList("Внешний диаметр трубы, м", ML.d.ToString())); //RepListInput.Add(new cReportList("Внутренний диаметр трубы, м", ML.dэ.ToString())); //RepListInput.Add(new cReportList("Проходное сечение для воздуха, м2", ML.wв.ToString())); //RepListInput.Add(new cReportList("Проходное сечение для продуктов сгорания, м2", ML.wд.ToString())); //RepListInput.Add(new cReportList("Поправочный коэффициент", ML.ɛdt.ToString())); //RepListInput.Add(new cReportList("Поправочный коэффициент на длину канала", ML.Kl1.ToString())); //RepListInput.Add(new cReportList("Поправочный коэффициент на число труб", ML.Kz.ToString())); //RepListInput.Add(new cReportList("Поправочный коэффициент 1", ML.Kt.ToString())); //RepListInput.Add(new cReportList("Интегральная степень черноты", ML.ɛг.ToString())); //RepListInput.Add(new cReportList("Значение доли излучения АЧТ", ML.αг2.ToString())); //RepListInput.Add(new cReportList("Значение доли излучения АЧТ", ML.αст2.ToString())); //RepListInput.Add(new cReportList("Радиус", ML.r.ToString())); //// Результаты расчета //List<cReportList> RepListOutput = new List<cReportList>(); //RepListOutput.Add(new cReportList("Теплоемкость воздуха, Дж/(м3K)", Math.Round(ML.get_Св(), 2).ToString())); //RepListOutput.Add(new cReportList("Теплоемкость дыма, Дж/(м3K)", Math.Round(ML.get_Сд(), 2).ToString())); //RepListOutput.Add(new cReportList("Энтальпия воздуха при начальной температуре, кДж/м3", Math.Round(ML.get_Iв1(), 1).ToString())); //RepListOutput.Add(new cReportList("Энтальпия воздуха при конечной температуре, кДж/м3", Math.Round(ML.get_Iв2()).ToString())); //RepListOutput.Add(new cReportList("Энтальпия дыма при начальной температуре, кДж/м3", Math.Round(ML.get_Iд1()).ToString())); //RepListOutput.Add(new cReportList("Средняя температура воздуха, оС", Math.Round(ML.get_Tв()).ToString())); //RepListOutput.Add(new cReportList("Фактическая скорость воздуха, м/с", Math.Round(ML.get_Wво(), 3).ToString())); //RepListOutput.Add(new cReportList("Фактическая скорость продуктов сгорания, м/с", Math.Round(ML.get_Wдо(), 3).ToString())); //RepListOutput.Add(new cReportList("Действительная скорость воздуха, м/с", Math.Round(ML.get_Wв(), 3).ToString())); //RepListOutput.Add(new cReportList("Действительная скорость продуктов сгорания, м/с", Math.Round(ML.get_Wд(), 3).ToString())); //RepListOutput.Add(new cReportList("Количество тепла, переданного воздуху, Квт", Math.Round(ML.get_Qв(), 2).ToString())); //RepListOutput.Add(new cReportList("Количество тепла,вносимое в теплообменный аппарат продуктами сгорания, Квт", Math.Round(ML.get_Qд1(), 2).ToString())); //RepListOutput.Add(new cReportList("Количество тепла,уносимое продуктами сгорания, Квт", Math.Round(ML.get_Qд2(), 1).ToString())); //RepListOutput.Add(new cReportList("Энтальпия продуктов сгорания, кДж/м3", Math.Round(ML.get_iд2(), 2).ToString())); //RepListOutput.Add(new cReportList("Температура продуктов сгорания после рекуператора, оС", Math.Round(ML.get_Tд2(), 2).ToString())); //RepListOutput.Add(new cReportList("Cреднелогарифмическая разность температур", Math.Round(ML.get_tср(), 2).ToString())); //RepListOutput.Add(new cReportList("Параметр", Math.Round(ML.get_R(), 2).ToString())); //RepListOutput.Add(new cReportList("Параметр", Math.Round(ML.get_P(), 2).ToString())); //RepListOutput.Add(new cReportList("Число Рейнольдса 1", Math.Round(ML.get_Re(), 2).ToString())); //RepListOutput.Add(new cReportList("Средняя температура дыма, °C", Math.Round(ML.get_Tд(), 3).ToString())); //RepListOutput.Add(new cReportList("Средняя температура стенки рекуператора, °C", Math.Round(ML.get_Tст(), 3).ToString())); //RepListOutput.Add(new cReportList("Отношение Тст/Тв", Math.Round(ML.get_Тст_Тв(), 2).ToString())); //RepListOutput.Add(new cReportList("Поправочный коэффициент", Math.Round(ML.get_kt(), 2).ToString())); //RepListOutput.Add(new cReportList("Поправочный коэффициент (если изогнута труба)", Math.Round(ML.get_Ku(), 2).ToString())); //RepListOutput.Add(new cReportList("Суммарный поправочный коэффициент 1", Math.Round(ML.get_К_рек(), 2).ToString())); //RepListOutput.Add(new cReportList("Число Нуссельта 1", Math.Round(ML.get_Nu(), 2).ToString())); //RepListOutput.Add(new cReportList("Коэффициент теплоотдачи конвекцией на пути движения воздуха, Вт/(м^2*оС)", Math.Round(ML.get_aв1(), 1).ToString())); //RepListOutput.Add(new cReportList("Коэффициент теплоотдачи конвекцией в пересчете на поверхность наружной трубы, Вт/(м^2*оС)", Math.Round(ML.get_aв1(), 2).ToString())); //RepListOutput.Add(new cReportList("Число Рейнольдса 2", Math.Round(ML.get_Re1(), 2).ToString())); //RepListOutput.Add(new cReportList("Суммарный поправочный коэффициент 2", Math.Round(ML.get_К_рек1()).ToString())); //RepListOutput.Add(new cReportList("Число Нуссельта 2", Math.Round(ML.get_Nu1(), 2).ToString())); //RepListOutput.Add(new cReportList("Коэффициент конвективной теплоотдачи", Math.Round(ML.get_αкд(), 1).ToString())); //RepListOutput.Add(new cReportList("Эффективная длина луча", Math.Round(ML.get_Sэф(), 2).ToString())); //RepListOutput.Add(new cReportList("Коэффициент для газовой части печной среды", Math.Round(ML.get_kг(), 2).ToString())); //RepListOutput.Add(new cReportList("Отношение Ср/Нр", Math.Round(ML.get_Cp_Hp(), 2).ToString())); //RepListOutput.Add(new cReportList("Коэффициент", Math.Round(ML.get_kc(), 3).ToString())); //RepListOutput.Add(new cReportList("Связующая величина", Math.Round(ML.get_x(), 3).ToString())); //RepListOutput.Add(new cReportList("Расчетное значение доли излучения АЧТ", Math.Round(ML.get_ɛг2(), 2).ToString())); //RepListOutput.Add(new cReportList("Коэффициент лучистой теплоотдачи, Вт/(м^2*оС)", Math.Round(ML.get_αдл(), 1).ToString())); //RepListOutput.Add(new cReportList("Суммарный коэффициент теплоотдачи от пс к стенке, Вт/(м^2*оС)", Math.Round(ML.get_αд(), 1).ToString())); //RepListOutput.Add(new cReportList("Коэффициент теплопередачи, Вт/(м^2*оС)", Math.Round(ML.get_Кзвезд(), 3).ToString())); //RepListOutput.Add(new cReportList("Коэффициент теплопередачи с учетом загрязнения труб, Вт/(м^2*оС)", Math.Round(ML.get_K(), 3).ToString())); //RepListOutput.Add(new cReportList("Поверхность нагрева", Math.Round(ML.get_Fзвезд(), 3).ToString())); //RepListOutput.Add(new cReportList("Плотность теплового потока от продуктов сгорания к воздуху, Вт/м2", Math.Round(ML.get_q(), 2).ToString())); //RepListOutput.Add(new cReportList("Максимальная температура стенки", Math.Round(ML.get_t_ст_max(), 2).ToString())); #endregion Закомментировал Лавров В.В. Подготовка данных для вывода в отчет #region Подготовить данные для вывода в отчет // Исходные данные в отчет только те, которые отметил пользователь (IsReport=true) List <cReportList> RepListInput = new List <cReportList>(); foreach (Param par in _allParamsInput) { if (par.IsReport) { double d = Math.Round(Convert.ToDouble( propertyGrid1.SelectedObject.GetType().GetProperty(par.PropertyName).GetValue( propertyGrid1.SelectedObject, null)), 3); RepListInput.Add(new cReportList(par.Description, d.ToString())); } } // Результаты расчета в отчет только те, которые отметил пользователь (IsReport=true) DataOutput _dataOutput = new DataOutput(ML); List <cReportList> RepListOutput = new List <cReportList>(); foreach (Param par in _allParamsOutput) { if (par.IsReport) { double d = Math.Round(Convert.ToDouble( _dataOutput.GetType().GetProperty(par.PropertyName).GetValue(_dataOutput, null)), 3); RepListOutput.Add(new cReportList(par.Description, d.ToString())); } } #endregion Подготовить данные для вывода в отчет // Указать отчету источники данных Rpt.cReportInputBindingSource.DataSource = RepListInput;; Rpt.cReportOutputBindingSource.DataSource = RepListOutput; // Показать окно отчета на весь экран Rpt.WindowState = FormWindowState.Maximized; Rpt.ShowDialog(this); }
private void FormOptionDefault() { // Показать в заголовке главного окна номер текущей версии и пользвателя this.Text = this.Text + " [версия " + Assembly.GetExecutingAssembly().GetName().Version.ToString() + "]"; // Установить редактируемый объект в PropertyGrid propertyGrid1.SelectedObject = new DataInput(ML); #region -- Заполнить перечень показателей в отчет: исходные данные if (File.Exists("cfgInputToRep.xml")) { XmlSerializer xmls = new XmlSerializer(typeof(List <Param>)); FileStream fs = null; try { fs = new FileStream("cfgInputToRep.xml", FileMode.Open); _allParamsInput = (List <Param>)xmls.Deserialize(fs); } catch { } finally { if (fs != null) { fs.Close(); } } } else { PropertyInfo[] pArr = propertyGrid1.SelectedObject.GetType().GetProperties(); if (pArr != null) { foreach (PropertyInfo p in pArr) { string descr = ""; object[] attr = p.GetCustomAttributes(false); if (attr != null) { foreach (object a in attr) { if (a is DisplayNameAttribute) { descr += (a as DisplayNameAttribute).DisplayName; } if (a is CategoryAttribute) { descr = descr.Insert(0, (a as CategoryAttribute).Category + ". "); } } } Param par = new Param(0); par.Description = descr; par.IsReport = false; par.PropertyName = p.Name; _allParamsInput.Add(par); } } } #endregion #region -- Заполнить перечень показателей в отчет: результаты расчета //if (File.Exists("cfgOutputToRep.xml")) //{ // XmlSerializer xmls = new XmlSerializer(typeof(List<Param>)); // FileStream fsOut = null; // try // { // fsOut = new FileStream("cfgOutputToRep.xml", FileMode.Open); // _allParamsOutput = (List<Param>)xmls.Deserialize(fsOut); // } // catch // { // } // finally // { // if (fsOut != null) fsOut.Close(); // } //} //else { DataOutput _dataOut = new DataOutput(ML); PropertyInfo[] pArrOut = _dataOut.GetType().GetProperties(); if (pArrOut != null) { foreach (PropertyInfo p in pArrOut) { string descrOut = ""; object[] attrOut = p.GetCustomAttributes(false); if (attrOut != null) { foreach (object a in attrOut) { if (a is DisplayNameAttribute) { descrOut += (a as DisplayNameAttribute).DisplayName; } if (a is CategoryAttribute) { descrOut = descrOut.Insert(0, (a as CategoryAttribute).Category + ", "); } } } Param parOut = new Param(0); parOut.Description = descrOut; parOut.IsReport = false; parOut.PropertyName = p.Name; _allParamsOutput.Add(parOut); } } } #endregion }