private void pbUtilityFunction_Paint(object sender, PaintEventArgs e) { // Перерисуем графичек UtilityFunctionDrawer.DrawUtilityFunction( e.Graphics, this._utFuncs[this._currentCriterionId]); }
/// <summary> /// Метод для установки UI в состояние, пригодное для /// ввода/просмотра значений функции полезности /// </summary> /// <param name="critArrayId">Индекс критерия в /// МАССИВЕ КРИТЕРИЕВ this._modelCriteria</param> private void SetUtilityFunctionUI(TId critArrayId) { Criterion crit = this._modelCriteria[critArrayId]; UtilityFunction utFunc = this._utFuncs[crit.Id]; // ХАРДКОД ahead !!! мне так стыдно if (utFunc.FixedPoints.Count != 10) { MessageBoxHelper.ShowError("Фиксированных точек больше или меньше, чем нужно!"); } this.lblCriterionName.Text = crit.Name; int fpCounter = 0; foreach (KeyValuePair <double, double> ufPoint in utFunc.FixedPoints) { this._trackBars[fpCounter].Value = Convert.ToInt32(ufPoint.Value * 100); this._critValLabels[fpCounter].Text = ufPoint.Key.ToString(SettingsManager.Instance.DoubleStringFormat); this._uFValLabels[fpCounter].Text = ufPoint.Value.ToString("F2"); // Запомним, какой из фиксированных точек соответствуют данные // контролы this._trackBars[fpCounter].Tag = ufPoint.Key; fpCounter++; } // Перерисуем графичек UtilityFunctionDrawer.DrawUtilityFunction( this.pbUtilityFunction.CreateGraphics(), this._utFuncs[this._currentCriterionId]); }
/// <summary> /// Метод-обработчик перемещения ползунка TrackBar'ов /// </summary> private void tb_Scroll(object sender, EventArgs e) { // Получим индекс трекбара, который сдвинулся int idx = Array.IndexOf(this._trackBars, (TrackBar)sender); // Получим ключ фиксированной точки, для которой изменилось // значение функции полезности double ufKey = (double)this._trackBars[idx].Tag; // Получим новое значение функции полезности double newUFValue = (double)this._trackBars[idx].Value / (double)100; // Обновим значение функции полезности для данной фиксированной // точки и UI this._utFuncs[this._currentCriterionId].FixedPoints[ufKey] = newUFValue; this._uFValLabels[idx].Text = newUFValue.ToString("F2"); // Перерисуем графичек UtilityFunctionDrawer.DrawUtilityFunction( this.pbUtilityFunction.CreateGraphics(), this._utFuncs[this._currentCriterionId]); }