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