예제 #1
0
 private void pbUtilityFunction_Paint(object sender, PaintEventArgs e)
 {
     // Перерисуем графичек
     UtilityFunctionDrawer.DrawUtilityFunction(
         e.Graphics,
         this._utFuncs[this._currentCriterionId]);
 }
예제 #2
0
        /// <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]);
        }
예제 #3
0
        /// <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]);
        }