示例#1
0
    private void BalancePercents(BudgetContainer exceptContainer)
    {
        _ignorePercentsChange = true;
        int  difference = 100 - _percentsSum;
        bool toAdd      = difference > 0;

        difference = Math.Abs(difference);

        foreach (DepartmentBudget b in _budgetContainers)
        {
            if (b.container != exceptContainer && difference != 0)
            {
                int cDifference = toAdd ? (100 - b.container.Percents) : (b.container.Percents);
                if (cDifference >= difference)
                {
                    b.container.SetPercents(b.container.Percents + (toAdd ? difference : -difference));
                    UpdateContainerButtonsActivity(b.container);
                    break;
                }
                else
                {
                    b.container.SetPercents(b.container.Percents + (toAdd ? cDifference : -cDifference));
                    difference -= cDifference;
                    UpdateContainerButtonsActivity(b.container);
                }
            }
        }
        _percentsSum          = 100;
        _ignorePercentsChange = false;
    }
示例#2
0
 private void PercentChanged(BudgetContainer container, int change)
 {
     if (!_ignorePercentsChange)
     {
         _percentsSum += change;
         if (_percentsSum != 100)
         {
             BalancePercents(container);
         }
         UpdateContainerButtonsActivity(container);
     }
 }
示例#3
0
 private void UpdateContainerButtonsActivity(BudgetContainer container)
 {
     if (container.Percents == 0)
     {
         container.ChangeSubstractButton(false);
     }
     else if (container.Percents == 100)
     {
         container.ChangeAddButton(false);
     }
     else
     {
         container.ChangeAddButton(true);
         container.ChangeSubstractButton(true);
     }
 }