private void CalcPriceText() { double price = model.Constant; foreach (var control in tableFactors.Controls) { if (control is CalcNumUpDown) { CalcNumUpDown field = control as CalcNumUpDown; if (field.Value != 0) { price += (double)field.Value * GetParamByName(field.Param); } } else if (control is CalcComboBox) { CalcComboBox field = control as CalcComboBox; if (field.SelectedIndex != -1) { price += (int)field.SelectedItem * GetParamByName(field.Param); } } } labelPrice.Text = $"Price: {price:0}$"; }
public CalculatePrice(Model model, Flat template) { InitializeComponent(); this.model = model; var prop = typeof(Flat).GetProperties(); for (int i = 3; i < prop.Length; i++) { tableFactors.RowCount++; tableFactors.RowStyles.Add(new RowStyle(SizeType.Absolute, 25F)); tableFactors.Controls.Add(new Label() { Text = prop[i].Name, TextAlign = ContentAlignment.MiddleCenter }, 0, tableFactors.RowCount - 1); Control control; if (prop[i].PropertyType == typeof(int)) { control = new CalcNumUpDown() { Param = prop[i].Name, Maximum = int.MaxValue, Value = (int)prop[i].GetValue(template) }; } else { CalcComboBox cBox = new CalcComboBox() { Param = prop[i].Name }; foreach (object element in prop[i].PropertyType.GetEnumValues()) { cBox.Items.Add(element); } cBox.SelectedItem = prop[i].GetValue(template); control = cBox; } tableFactors.Controls.Add(control, 1, tableFactors.RowCount - 1); } CalcPriceText(); }