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; }
private void PercentChanged(BudgetContainer container, int change) { if (!_ignorePercentsChange) { _percentsSum += change; if (_percentsSum != 100) { BalancePercents(container); } UpdateContainerButtonsActivity(container); } }
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); } }