187 lines
6.8 KiB
C#
187 lines
6.8 KiB
C#
|
using MyCustomComponents;
|
|||
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.ComponentModel;
|
|||
|
using System.Data;
|
|||
|
using System.Drawing;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
using System.Threading.Tasks;
|
|||
|
using System.Windows.Forms;
|
|||
|
|
|||
|
namespace DesktopWithMyVisualComponents
|
|||
|
{
|
|||
|
public partial class FormMain : Form
|
|||
|
{
|
|||
|
readonly List<Device> devices = new()
|
|||
|
{
|
|||
|
new Device { Id = 1, SerialNumber = "SM-12345", DeviceType = "Мобильный телефон", Model = "IPhone 13" },
|
|||
|
new Device { Id = 2, SerialNumber = "SM-G3412", DeviceType = "Мобильный телефон", Model = "Samsung Galaxy S24" },
|
|||
|
new Device { Id = 3, SerialNumber = "CO2UD8471", DeviceType = "Ноутбук", Model = "MacBook Pro" },
|
|||
|
new Device { Id = 4, SerialNumber = "R80NZD8812", DeviceType = "Умные часы", Model = "Galaxy Watch 4" },
|
|||
|
new Device { Id = 5, SerialNumber = "FN738214", DeviceType = "Умные часы", Model = "Apple Watch 3", },
|
|||
|
};
|
|||
|
|
|||
|
public FormMain()
|
|||
|
{
|
|||
|
InitializeComponent();
|
|||
|
|
|||
|
// Пример для компонента
|
|||
|
var list = new List<string>() { "Значение 1", "Значение 2", "Значение 3", "Значение 4", "Значение 5" };
|
|||
|
customSelectedCheckedListBoxProperty.Items.AddRange(list.ToArray());
|
|||
|
|
|||
|
comboBoxDeviceType.Items.Add("Мобильный телефон");
|
|||
|
comboBoxDeviceType.Items.Add("Ноутбук");
|
|||
|
comboBoxDeviceType.Items.Add("Умные часы");
|
|||
|
|
|||
|
// Загрузка дерева с девайсами
|
|||
|
LoadTree();
|
|||
|
|
|||
|
// Присоединить обработчик события при изменении значения
|
|||
|
customInputRangeNumber.ChangeEvent += CustomInputRangeNumber_ChangeEvent;
|
|||
|
}
|
|||
|
|
|||
|
// Загрузка дерево с иерархией устройств на основе типа устройства, модели и серийного номера
|
|||
|
public void LoadTree()
|
|||
|
{
|
|||
|
// Очистите существующие узлы перед загрузкой новых
|
|||
|
customTreeView.Clear();
|
|||
|
|
|||
|
customTreeView.hierarchy = new List<string> { "DeviceType", "Model", "SerialNumber" };
|
|||
|
|
|||
|
foreach (Device device in devices)
|
|||
|
{
|
|||
|
customTreeView.AddNode(device, "SerialNumber");
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// Вынесенная логика проверки значения
|
|||
|
private void UpdateLabelWithValue()
|
|||
|
{
|
|||
|
labelCheckValue.Text = customInputRangeNumber.Value.ToString();
|
|||
|
if (string.IsNullOrEmpty(labelCheckValue.Text))
|
|||
|
{
|
|||
|
labelCheckValue.Text = customInputRangeNumber.Error;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// Добавляем метод для обработки изменения значения
|
|||
|
private void CustomInputRangeNumber_ChangeEvent(object sender, EventArgs e)
|
|||
|
{
|
|||
|
UpdateLabelWithValue();
|
|||
|
}
|
|||
|
|
|||
|
// Метод проверки значения в Input
|
|||
|
private void buttonCheck_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
UpdateLabelWithValue();
|
|||
|
}
|
|||
|
|
|||
|
// Установка границ
|
|||
|
private void buttonSetBorders_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
if (decimal.TryParse(textBoxMin.Text, out decimal minValue) && decimal.TryParse(textBoxMax.Text, out decimal maxValue))
|
|||
|
{
|
|||
|
// Проверка: MaxValue должно быть больше MinValue
|
|||
|
if (maxValue <= minValue)
|
|||
|
{
|
|||
|
labelCheckValue.Text = "Ошибка: MaxValue должно быть больше MinValue.";
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
// Устанавливаем границы
|
|||
|
customInputRangeNumber.MinValue = minValue;
|
|||
|
customInputRangeNumber.MaxValue = maxValue;
|
|||
|
labelCheckValue.Text = "Границы установлены";
|
|||
|
|
|||
|
// Проверим текущее значение компонента на соответствие новому диапазону
|
|||
|
/*try
|
|||
|
{
|
|||
|
var currentValue = customInputRangeNumber.Value;
|
|||
|
|
|||
|
// Если значение в пределах, выводим сообщение об успехе
|
|||
|
labelCheckValue.Text = "Границы установлены. Текущее значение в пределах диапазона.";
|
|||
|
}
|
|||
|
catch (ArgumentOutOfRangeException ex)
|
|||
|
{
|
|||
|
// Если текущее значение вне диапазона, выводим ошибку
|
|||
|
labelCheckValue.Text = $"Ошибка: {ex.Message}";
|
|||
|
}*/
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
labelCheckValue.Text = "Ошибка: неверные значения границ";
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void textBoxMin_KeyPress(object sender, KeyPressEventArgs e)
|
|||
|
{
|
|||
|
char ch = e.KeyChar;
|
|||
|
|
|||
|
if (!Char.IsDigit(ch) && ch != 8 && ch != 45)
|
|||
|
{
|
|||
|
e.Handled = true;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void textBoxMax_KeyPress(object sender, KeyPressEventArgs e)
|
|||
|
{
|
|||
|
char ch = e.KeyChar;
|
|||
|
|
|||
|
if (!Char.IsDigit(ch) && ch != 8 && ch != 45)
|
|||
|
{
|
|||
|
e.Handled = true;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void buttonAdd_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
if (textBoxAdd.Text != "" && !customSelectedCheckedListBoxProperty.Items.Contains(textBoxAdd.Text))
|
|||
|
customSelectedCheckedListBoxProperty.Items.Add(textBoxAdd.Text);
|
|||
|
else if (customSelectedCheckedListBoxProperty.Items.Contains(textBoxAdd.Text))
|
|||
|
customSelectedCheckedListBoxProperty.SelectedElement = textBoxAdd.Text;
|
|||
|
}
|
|||
|
|
|||
|
private void buttonClear_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
customSelectedCheckedListBoxProperty.Clear();
|
|||
|
}
|
|||
|
|
|||
|
private void buttonGetSelected_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
labelSelectedValue.Text = customSelectedCheckedListBoxProperty.SelectedElement;
|
|||
|
if (string.IsNullOrEmpty(labelSelectedValue.Text))
|
|||
|
{
|
|||
|
labelSelectedValue.Text = "Значение \nне выбрано";
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// Добавление нового узла в дерево
|
|||
|
private void buttonAddToTree_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
Device device = new Device
|
|||
|
{
|
|||
|
SerialNumber = textBoxSerialNumber.Text,
|
|||
|
Model = textBoxModel.Text,
|
|||
|
DeviceType = comboBoxDeviceType.SelectedItem?.ToString()
|
|||
|
};
|
|||
|
|
|||
|
customTreeView.AddNode(device, "SerialNumber");
|
|||
|
}
|
|||
|
|
|||
|
// Получение данных выбранного узла из дерева
|
|||
|
private void buttonGetFromTree_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
Device? device = customTreeView.GetSelectedNode<Device>();
|
|||
|
if (device == null)
|
|||
|
{
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
textBoxSerialNumber.Text = device.SerialNumber;
|
|||
|
textBoxModel.Text = device.Model;
|
|||
|
comboBoxDeviceType.SelectedItem = device.DeviceType;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|