diff --git a/ProjectFamilyBudget/Entities/Enums/IncomeExpenseType.cs b/ProjectFamilyBudget/Entities/Enums/IncomeExpenseType.cs index 01a59a7..795d9b5 100644 --- a/ProjectFamilyBudget/Entities/Enums/IncomeExpenseType.cs +++ b/ProjectFamilyBudget/Entities/Enums/IncomeExpenseType.cs @@ -5,7 +5,7 @@ using System.Text; using System.Threading.Tasks; namespace ProjectFamilyBudget.Entities.Enums; - +[Flags] public enum IncomeExpenseType { None = 0, diff --git a/ProjectFamilyBudget/Entities/People.cs b/ProjectFamilyBudget/Entities/People.cs index 3ab0117..d8eb15d 100644 --- a/ProjectFamilyBudget/Entities/People.cs +++ b/ProjectFamilyBudget/Entities/People.cs @@ -26,5 +26,4 @@ public class People MemberType = memberType }; } - } diff --git a/ProjectFamilyBudget/Forms/FormExpense.Designer.cs b/ProjectFamilyBudget/Forms/FormExpense.Designer.cs index 58a2134..656ab88 100644 --- a/ProjectFamilyBudget/Forms/FormExpense.Designer.cs +++ b/ProjectFamilyBudget/Forms/FormExpense.Designer.cs @@ -35,7 +35,7 @@ buttonCansel = new Button(); textBoxCategory = new TextBox(); label1 = new Label(); - comboBoxExpenseType = new ComboBox(); + checkedListBoxType = new CheckedListBox(); SuspendLayout(); // // label5 @@ -57,7 +57,7 @@ // label3 // label3.AutoSize = true; - label3.Location = new Point(19, 147); + label3.Location = new Point(19, 196); label3.Name = "label3"; label3.Size = new Size(63, 15); label3.TabIndex = 16; @@ -65,7 +65,7 @@ // // buttonSave // - buttonSave.Location = new Point(12, 223); + buttonSave.Location = new Point(12, 254); buttonSave.Name = "buttonSave"; buttonSave.Size = new Size(102, 41); buttonSave.TabIndex = 18; @@ -75,7 +75,7 @@ // // buttonCansel // - buttonCansel.Location = new Point(192, 223); + buttonCansel.Location = new Point(192, 254); buttonCansel.Name = "buttonCansel"; buttonCansel.Size = new Size(97, 41); buttonCansel.TabIndex = 19; @@ -85,7 +85,7 @@ // // textBoxCategory // - textBoxCategory.Location = new Point(101, 144); + textBoxCategory.Location = new Point(101, 193); textBoxCategory.Name = "textBoxCategory"; textBoxCategory.Size = new Size(188, 23); textBoxCategory.TabIndex = 20; @@ -99,21 +99,20 @@ label1.TabIndex = 21; label1.Text = "Тип расхода"; // - // comboBoxExpenseType + // checkedListBoxType // - comboBoxExpenseType.DropDownStyle = ComboBoxStyle.DropDownList; - comboBoxExpenseType.FormattingEnabled = true; - comboBoxExpenseType.Location = new Point(101, 85); - comboBoxExpenseType.Name = "comboBoxExpenseType"; - comboBoxExpenseType.Size = new Size(188, 23); - comboBoxExpenseType.TabIndex = 22; + checkedListBoxType.FormattingEnabled = true; + checkedListBoxType.Location = new Point(101, 88); + checkedListBoxType.Name = "checkedListBoxType"; + checkedListBoxType.Size = new Size(188, 58); + checkedListBoxType.TabIndex = 22; // // FormExpense // AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(301, 281); - Controls.Add(comboBoxExpenseType); + ClientSize = new Size(301, 307); + Controls.Add(checkedListBoxType); Controls.Add(label1); Controls.Add(textBoxCategory); Controls.Add(buttonCansel); @@ -137,6 +136,6 @@ private Button buttonCansel; private TextBox textBoxCategory; private Label label1; - private ComboBox comboBoxExpenseType; + private CheckedListBox checkedListBoxType; } } \ No newline at end of file diff --git a/ProjectFamilyBudget/Forms/FormExpense.cs b/ProjectFamilyBudget/Forms/FormExpense.cs index e2a406a..4c024d9 100644 --- a/ProjectFamilyBudget/Forms/FormExpense.cs +++ b/ProjectFamilyBudget/Forms/FormExpense.cs @@ -10,6 +10,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; +using Unity; namespace ProjectFamilyBudget.Forms { @@ -28,8 +29,15 @@ namespace ProjectFamilyBudget.Forms { throw new InvalidDataException(nameof(expense)); } + foreach (IncomeExpenseType elem in Enum.GetValues(typeof(IncomeExpenseType))) + { + if ((elem & expense.ExpenseType) != 0) + { + checkedListBoxType.SetItemChecked(checkedListBoxType.Items.IndexOf( + elem), true); + } + } textBoxName.Text = expense.Name; - comboBoxExpenseType.SelectedItem = expense.ExpenseType; textBoxCategory.Text = expense.ExpenseCategory; _expenseId = value; @@ -46,7 +54,10 @@ namespace ProjectFamilyBudget.Forms InitializeComponent(); _expense = expense ?? throw new ArgumentNullException(nameof(expense)); - comboBoxExpenseType.DataSource = Enum.GetValues(typeof(IncomeExpenseType)); + foreach (var elem in Enum.GetValues(typeof(IncomeExpenseType))) + { + checkedListBoxType.Items.Add(elem); + } } private void buttonSave_Click(object sender, EventArgs e) @@ -55,7 +66,7 @@ namespace ProjectFamilyBudget.Forms { if (string.IsNullOrWhiteSpace(textBoxName.Text) || - string.IsNullOrWhiteSpace(textBoxCategory.Text) || (comboBoxExpenseType.SelectedIndex < 0)) + string.IsNullOrWhiteSpace(textBoxCategory.Text) || checkedListBoxType.CheckedItems.Count == 0) { throw new Exception("Имеются незаполненные поля"); } @@ -77,7 +88,14 @@ namespace ProjectFamilyBudget.Forms } private void buttonCansel_Click(object sender, EventArgs e) => Close(); - private Expense CreateExpense(int id) => Expense.CreateEntity(id, (IncomeExpenseType)comboBoxExpenseType.SelectedItem! - , textBoxName.Text, textBoxCategory.Text); + private Expense CreateExpense(int id) + { + IncomeExpenseType expenseType = IncomeExpenseType.None; + foreach (var elem in checkedListBoxType.CheckedItems) + { + expenseType |= (IncomeExpenseType)elem; + } + return Expense.CreateEntity(id, expenseType, textBoxName.Text, textBoxCategory.Text); + } } } diff --git a/ProjectFamilyBudget/Forms/FormExpense.resx b/ProjectFamilyBudget/Forms/FormExpense.resx index 8b2ff64..af32865 100644 --- a/ProjectFamilyBudget/Forms/FormExpense.resx +++ b/ProjectFamilyBudget/Forms/FormExpense.resx @@ -1,7 +1,7 @@