2024-10-21 02:08:06 +04:00

187 lines
6.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
}
}
}