diff --git a/COP_5/COP_5/ChooseCheckedListBox.cs b/COP_5/COP_5/ChooseCheckedListBox.cs index a3d42b4..642e6aa 100644 --- a/COP_5/COP_5/ChooseCheckedListBox.cs +++ b/COP_5/COP_5/ChooseCheckedListBox.cs @@ -7,11 +7,8 @@ InitializeComponent(); } - // вызывается, когда изменяется выбранное значение в CheckedListBox public event EventHandler? SelectedValueChanged; - // Если количество отмеченных элементов больше одного, то все отмеченные - // элементы, кроме выбранного, снимаются отметки. private void checkedListBox_SelectedIndexChanged(object sender, EventArgs e) { if (checkedListBox.CheckedItems.Count > 1) @@ -27,7 +24,6 @@ SelectedValueChanged?.Invoke(this, e); } - //Это свойство позволяет получить или установить выбранное значение в CheckedListBox public string SelectedValue { get diff --git a/COP_5/COP_5/Exceptions/TreeViewException.cs b/COP_5/COP_5/Exceptions/TreeViewException.cs new file mode 100644 index 0000000..3008057 --- /dev/null +++ b/COP_5/COP_5/Exceptions/TreeViewException.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace COP_5.Exceptions +{ + public class TreeViewException : Exception + { + public TreeViewException() { } + public TreeViewException(string message) : base(message) { } + public TreeViewException(string message, Exception inner) : base(message, inner) { } + } +} diff --git a/COP_5/COP_5/RangeTextBox.cs b/COP_5/COP_5/RangeTextBox.cs index 5d14cf8..6daecab 100644 --- a/COP_5/COP_5/RangeTextBox.cs +++ b/COP_5/COP_5/RangeTextBox.cs @@ -5,15 +5,41 @@ namespace COP_5 { public partial class RangeTextBox : UserControl { - public int? MinLength { get; set; } - public int? MaxLength { get; set; } + public int? max = null; + public int? min = null; + public int? MinLength + { + get + { + return max; + } + set + { + if (value == null || value <= 0) return; + max = value; + + } + } + public int? MaxLength + { + get + { + return min; + } + set + { + if (value == null || value < 0) return; + min = value; + + } + } public event EventHandler? ChangedValue; public string? TextBoxValue { get { - if (MinLength == 0 && MaxLength == 0) + if (MinLength == null && MaxLength == null) { throw new RangeException("Диапазон не задан."); } @@ -25,18 +51,13 @@ namespace COP_5 } set { - if (MinLength != 0 && MaxLength != 0) + if (MinLength != null && MaxLength != null) { if (value.Length >= MinLength && value.Length <= MaxLength) { textBox.Text = value; - ChangedValue?.Invoke(this, EventArgs.Empty); } } - else - { - throw new RangeException("Диапазон не задан."); - } } } @@ -46,21 +67,18 @@ namespace COP_5 } private void textBox_TextChanged(object sender, EventArgs e) { - if (MinLength != 0 && MaxLength != 0) + ChangedValue?.Invoke(this, e); + if (MinLength != null && MaxLength != null) { if (textBox.Text.Length < MinLength || textBox.Text.Length > MaxLength) { - MessageBox.Show("Текст находится в недопустимом диапазоне!", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Information); + textBox.ForeColor = System.Drawing.Color.Red; } else { - ChangedValue?.Invoke(this, e); + textBox.ForeColor = System.Drawing.Color.Black; } } - else - { - throw new RangeException("Диапазон не задан."); - } } } } diff --git a/COP_5/COP_5/TreeView.cs b/COP_5/COP_5/TreeView.cs index a5de7ba..e255269 100644 --- a/COP_5/COP_5/TreeView.cs +++ b/COP_5/COP_5/TreeView.cs @@ -1,4 +1,5 @@ -using COP_5.TestClasses; +using COP_5.Exceptions; +using COP_5.TestClasses; namespace COP_5 { @@ -18,8 +19,12 @@ namespace COP_5 this.hierarchy = hierarchy; this.newBranch = newBranch; } + public void Clear() + { + treeView1.Nodes.Clear(); + } - public void AddObjectToTree(object obj, string stopAtProperty) + public void AddObjectToTree(T obj, string stopAtProperty) { TreeNode currentNode = treeView1.Nodes.Cast().FirstOrDefault(); foreach (var property in hierarchy) @@ -63,16 +68,19 @@ namespace COP_5 } } - public object GetSelectedObject() + public T GetSelectedObject() where T : new() { if (treeView1.SelectedNode == null) { - return null; + throw new TreeViewException("Узел равен null"); + } + if (treeView1.SelectedNode.Nodes.Count > 0) + { + throw new TreeViewException("Невозможно получить объект из этого узла"); } var node = treeView1.SelectedNode; - // Создается новый экземпляр объекта типа Employee - var obj = Activator.CreateInstance(typeof(Employee)); + var obj = new T(); foreach (var property in hierarchy) { // получаем значение узла