/// <summary> /// Метод, заполняющий таблицу в соответствии с имеющимся /// порядком критериев /// </summary> /// <param name="rowToSelectIndex">Индекс строки, которую нужно выделить /// (подсветить) в таблице. Если не надо подсвечивать, то -1</param> private void FillDataTable(int rowToSelectIndex) { this.dgvData.SuspendLayout(); this.dgvData.Rows.Clear(); int critCount = this._criteriaPriorities.GetLength(0); for (int row = 0; row < critCount; row++) { this.dgvData.Rows.Add(); this.dgvData.Rows[row].Cells[0].Value = (row + 1).ToString(); this.dgvData.Rows[row].Cells[1].Value = this._model.Criteria[this._criteriaPriorities[row]].Name; this.dgvData.Rows[row].Cells[2].Value = CriterionTypeManager.GetCriterionTypeName( this._model.Criteria[this._criteriaPriorities[row]].Type ); } this.dgvData.ClearSelection(); if (rowToSelectIndex != -1 && rowToSelectIndex > -1 && rowToSelectIndex < critCount) { this.dgvData.Rows[rowToSelectIndex].Selected = true; } this.dgvData.ResumeLayout(); }
private void btnCriterionInfo_Click(object sender, EventArgs e) { string message = "Имя критерия: " + this._modelCriteria[this._currentCriterionId].Name + "\nИдентификатор переменной: " + this._modelCriteria[this._currentCriterionId].VariableIdentifier + "\nТип критерия: " + CriterionTypeManager.GetCriterionTypeName( this._modelCriteria[this._currentCriterionId].Type) + "\nВесовой коэффициент: " + this._modelCriteria[this._currentCriterionId].Weight.ToString(); MessageBoxHelper.ShowInformation(message); }
/// <summary> /// Writes model information (parameters, criteria, functional constraints) /// </summary> /// <param name="model"><see cref="Model"/> instance to be exported</param> /// <param name="outputFileWriter"><see cref="StreamWriter"/> to be used for the output</param> private void WriteModelDetails(Model model, StreamWriter outputFileWriter) { outputFileWriter.WriteLine(NamesAndFormats.Parameters); foreach (Parameter parameter in model.Parameters.Values) { string variableIdentifier = string.IsNullOrEmpty(parameter.VariableIdentifier) ? string.Empty : string.Format(NamesAndFormats.VariableIdentifierFormat, parameter.VariableIdentifier); outputFileWriter.WriteLine(string.Format( NamesAndFormats.ParameterFormat, parameter.Name, variableIdentifier, parameter.MinValue.ToStringInvariant(SettingsManager.Instance.DoubleStringFormat), parameter.MaxValue.ToStringInvariant(SettingsManager.Instance.DoubleStringFormat))); } outputFileWriter.WriteLine(); outputFileWriter.WriteLine(); outputFileWriter.WriteLine(NamesAndFormats.Criteria); foreach (Criterion criterion in model.Criteria.Values) { string variableIdentifier = string.IsNullOrEmpty(criterion.VariableIdentifier) ? string.Empty : string.Format(NamesAndFormats.VariableIdentifierFormat, criterion.VariableIdentifier); outputFileWriter.WriteLine(string.Format( NamesAndFormats.CriterionFormat, criterion.Name, variableIdentifier, CriterionTypeManager.GetCriterionTypeName(criterion.Type))); } outputFileWriter.WriteLine(); outputFileWriter.WriteLine(); outputFileWriter.WriteLine(NamesAndFormats.Constraints); foreach (Constraint constraint in model.FunctionalConstraints.Values) { string variableIdentifier = string.IsNullOrEmpty(constraint.VariableIdentifier) ? string.Empty : string.Format(NamesAndFormats.VariableIdentifierFormat, constraint.VariableIdentifier); outputFileWriter.WriteLine(string.Format( NamesAndFormats.ConstraintFormat, constraint.Name, variableIdentifier, RelationManager.GetRelationName(constraint.ConstraintRelation), constraint.Value.ToStringInvariant(SettingsManager.Instance.DoubleStringFormat))); } }
/// <summary> /// Метод для заполнения таблицы данными о критериях /// </summary> private void UpdateCriteriaDataGrid() { this.dgvCriteria.SuspendLayout(); this.dgvCriteria.Rows.Clear(); foreach (KeyValuePair <TId, Criterion> criterion in this._model.Criteria) { int ind = this.dgvCriteria.Rows.Add(); this.dgvCriteria[0, ind].Value = criterion.Value.Id; this.dgvCriteria[1, ind].Value = criterion.Value.Name; this.dgvCriteria[2, ind].Value = criterion.Value.VariableIdentifier; this.dgvCriteria[3, ind].Value = CriterionTypeManager.GetCriterionTypeName(criterion.Value.Type); #if !DUMMY // НЕ РАБОТАЕТ В РЕЖИМЕ ДЛЯ ДУРАЧКОВ this.dgvCriteria[4, ind].Value = criterion.Value.Expression; #endif } this.dgvCriteria.ResumeLayout(); }
public CriterionForm( Model model, TId criterionId) { InitializeComponent(); this._model = model; this._criterionId = criterionId; this.Text = "Редактировать критерий оптимальности"; this.FillCriterionTypesList(); #if DUMMY this.DummyMode(); #endif // Заполним поля информацией Criterion criterion = this._model.Criteria[this._criterionId]; this.txtCriterionName.Text = criterion.Name; this.txtCriterionVariableIdentifier.Text = criterion.VariableIdentifier; this.cmbCriterionType.SelectedItem = CriterionTypeManager.GetCriterionTypeName(criterion.Type); this.txtCriterionExpression.Text = criterion.Expression; }
private void btnOK_Click(object sender, EventArgs e) { string critName = this.txtCriterionName.Text.Trim(); string critVariableIdentifier = this.txtCriterionVariableIdentifier.Text.Trim(); CriterionType critType = CriterionTypeManager.ParseName(this.cmbCriterionType.Text); #if DUMMY string critExpression = string.Empty; #else string critExpression = this.txtCriterionExpression.Text.Trim(); #endif if (string.IsNullOrEmpty(critName)) { MessageBoxHelper.ShowExclamation("Введите имя критерия оптимальности"); return; } if (!string.IsNullOrEmpty(critVariableIdentifier)) { if (!VariableIdentifierChecker.RegExCheck(critVariableIdentifier)) { MessageBoxHelper.ShowExclamation("Идентификатор переменной должен начинаться только с заглавной или строчной буквы \nлатинского алфавита и содержать заглавные и строчные буквы латинского алфавита,\n цифры и символ подчеркивания"); return; } if (VariableIdentifierChecker.IsInRestrictedList(critVariableIdentifier, Program.ApplicationSettings.RestrictedVariableIdentifiers)) { MessageBoxHelper.ShowExclamation("Идентификатор переменной совпадает с одним из запрещенных вариантов"); return; } if (this._criterionId == -1) { // Если это новый критерий, то надо безусловно проверить // идентификатор if (this._model.CheckCriterionVariableIdentifier(critVariableIdentifier)) { MessageBoxHelper.ShowExclamation("Критерий оптимальности с таким идентификатором переменной уже существует в модели"); return; } } else { // Если критерий редактируется, то если идентификатор // не изменялся, то можно его не проверять if (this._model.Criteria[this._criterionId].VariableIdentifier != critVariableIdentifier && this._model.CheckCriterionVariableIdentifier(critVariableIdentifier)) { MessageBoxHelper.ShowExclamation("Критерий оптимальности с таким идентификатором переменной уже существует в модели"); return; } } } if (this._criterionId == -1) { this._criterionId = this._model.Criteria.GetFreeConsequentId(); Criterion criterion = new Criterion( this._criterionId, critName, critVariableIdentifier, critType, critExpression); this._model.Criteria.Add(criterion); this.DialogResult = DialogResult.OK; this.Close(); } else { Criterion criterion = this._model.Criteria[this._criterionId]; criterion.Name = critName; criterion.VariableIdentifier = critVariableIdentifier; criterion.Type = critType; criterion.Expression = critExpression; this.DialogResult = DialogResult.OK; this.Close(); } }
private void FillCriterionTypesList() { this.cmbCriterionType.Items.AddRange(CriterionTypeManager.GetCriterionTypeNames().ToArray()); this.cmbCriterionType.SelectedIndex = 0; }