lab 1 done
This commit is contained in:
parent
cca38e76c1
commit
66702ee864
@ -19,8 +19,8 @@ namespace WinFormsLibraryVolkov
|
||||
private string example;
|
||||
|
||||
// 2 публичных поля для настройки границ диапазона
|
||||
public DateTime? MinDate { get; set; }
|
||||
public DateTime? MaxDate { get; set; }
|
||||
public DateTime MinDate { get; set; }
|
||||
public DateTime MaxDate { get; set; }
|
||||
|
||||
public CustomInputRangeDate()
|
||||
{
|
||||
@ -31,26 +31,24 @@ namespace WinFormsLibraryVolkov
|
||||
public string Error { get; protected set; } = string.Empty;
|
||||
|
||||
//Публичное свойство для установки и получения введенного значения(set, get).
|
||||
///При получении проводиться проверка,
|
||||
//При получении проводиться проверка,
|
||||
//если введенное значение не входит в диапазон, возвращать
|
||||
//значение null, а в отдельное поле выводить текст ошибки.При
|
||||
//установке должна проводиться проверка, если передаваемое
|
||||
//значение не входит в диапазон, то не заполнять поле компонента.
|
||||
public DateTime? Date
|
||||
public DateTime Date
|
||||
{
|
||||
get
|
||||
{
|
||||
if (MinDate == null || MaxDate == null)
|
||||
{
|
||||
Error = "Диапазон не задан";
|
||||
return null;
|
||||
throw new ArgumentException("Диапазон не задан");
|
||||
}
|
||||
if (dateTimePicker.Value >= MinDate && dateTimePicker.Value <= MaxDate)
|
||||
{
|
||||
return dateTimePicker.Value;
|
||||
}
|
||||
Error = "Введенная дата лежит вне диапазона " + MinDate?.ToShortDateString() + " - " + MaxDate?.ToShortDateString();
|
||||
return null;
|
||||
throw new ArgumentException($"Введенная дана лежит вне диапазона {MinDate.ToShortDateString()} - {MaxDate.ToShortDateString()}");
|
||||
}
|
||||
set
|
||||
{
|
||||
@ -58,9 +56,9 @@ namespace WinFormsLibraryVolkov
|
||||
{
|
||||
Error = "Диапазон не задан";
|
||||
}
|
||||
if (value.HasValue && value >= MinDate && value <= MaxDate)
|
||||
if (value >= MinDate && value <= MaxDate)
|
||||
{
|
||||
dateTimePicker.Value = value.Value;
|
||||
dateTimePicker.Value = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -68,7 +66,7 @@ namespace WinFormsLibraryVolkov
|
||||
private void dateTimePicker_Enter(object sender, EventArgs e)
|
||||
{
|
||||
ToolTip tt = new ToolTip();
|
||||
example = "Введите дату от " + MinDate?.ToShortDateString() + " до " + MaxDate?.ToShortDateString();
|
||||
example = "Введите дату от " + MinDate.ToShortDateString() + " до " + MaxDate.ToShortDateString();
|
||||
tt.Show(example, dateTimePicker, 30, -20, 1000);
|
||||
}
|
||||
|
||||
|
@ -34,15 +34,15 @@ namespace WinFormsLibraryVolkov
|
||||
}
|
||||
}
|
||||
|
||||
// Обновленный метод для добавления одного элемента в дерево
|
||||
// Метод для добавления элемента в дерево
|
||||
public void AddCell<T>(int columnIndex, T element)
|
||||
{
|
||||
if (Levels == null || element == null || columnIndex < 0 || columnIndex >= Levels.NodeNames.Count)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (Levels == null) throw new ArgumentException("Levels равен null");
|
||||
if (element == null) throw new ArgumentException("element равен null");
|
||||
if (columnIndex < 0) throw new ArgumentException("индекс колонки < 0");
|
||||
if (columnIndex >= Levels.NodeNames.Count) throw new ArgumentException("Индекс колонки > чем общее кол-во");
|
||||
|
||||
TreeNodeCollection treeNodeCollection = treeView.Nodes;
|
||||
TreeNodeCollection treeNodeCollection = treeView.Nodes;
|
||||
int num = 0;
|
||||
foreach (string nodeName in Levels.NodeNames)
|
||||
{
|
||||
@ -72,34 +72,30 @@ namespace WinFormsLibraryVolkov
|
||||
}
|
||||
}
|
||||
|
||||
public T GetSelectedObject<T>() where T : class, new()
|
||||
{
|
||||
if (treeView.SelectedNode == null || Levels == null || treeView.SelectedNode.Nodes.Count > 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
public T GetSelectedObject<T>() where T : class, new()
|
||||
{
|
||||
if (treeView.SelectedNode == null) throw new ArgumentException("treeView.SelectedNode == null");
|
||||
if (Levels == null) throw new ArgumentException("Levels равен null");
|
||||
if (treeView.SelectedNode.Nodes.Count > 0) throw new ArgumentException("treeView.SelectedNode.Nodes.Count > 0");
|
||||
|
||||
Stack<string> stack = new Stack<string>();
|
||||
for (TreeNode treeNode = treeView.SelectedNode; treeNode != null; treeNode = treeNode.Parent)
|
||||
{
|
||||
stack.Push(treeNode.Text);
|
||||
}
|
||||
|
||||
if (stack.Count != Levels.NodeNames.Count)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
T val = new T();
|
||||
foreach (string nodeName in Levels.NodeNames)
|
||||
{
|
||||
PropertyInfo property = val.GetType().GetProperty(nodeName);
|
||||
string value = stack.Pop();
|
||||
property?.SetValue(val, Convert.ChangeType(value, property?.PropertyType));
|
||||
}
|
||||
|
||||
return val;
|
||||
}
|
||||
|
||||
}
|
||||
T val = new T();
|
||||
TreeNode treeNode = treeView.SelectedNode;
|
||||
int i = Levels.NodeNames.ToArray().Length - 1; // Получаем массив из очереди
|
||||
while (treeNode != null && i >= 0)
|
||||
{
|
||||
PropertyInfo property = val.GetType().GetProperty(Levels.NodeNames.ToArray()[i]); // Обращаемся к массиву
|
||||
if (property != null)
|
||||
{
|
||||
property.SetValue(val, Convert.ChangeType(treeNode.Text, property.PropertyType));
|
||||
}
|
||||
treeNode = treeNode.Parent;
|
||||
i--;
|
||||
}
|
||||
if (i >= 0)
|
||||
{
|
||||
return null; // Не все свойства объекта установлены
|
||||
}
|
||||
return val;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user