2024-09-05 18:58:41 +04:00

108 lines
2.6 KiB
C#

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 Components.VisualComponents
{
/// <summary>
/// Визуальный компонент для выбора из выпадающего списка
/// </summary>
public partial class CustomComboBox : UserControl
{
/// <summary>
/// Событие, вызываемое при смене значения
/// </summary>
private EventHandler _onValueChangedEvent;
/// <summary>
/// Событие, вызываемое при смене значения
/// </summary>
public event EventHandler ValueChanged
{
add
{
_onValueChangedEvent += value;
}
remove
{
_onValueChangedEvent -= value;
}
}
/// <summary>
/// Выбранный элемент
/// </summary>
public string SelectedItem
{
get
{
if (comboBox.Items.Count == 0)
{
return "";
}
if (comboBox.SelectedItem == null)
{
return "";
}
return comboBox.SelectedItem.ToString()!;
}
set
{
if (comboBox.Items.Contains(value))
{
comboBox.SelectedItem = value;
}
}
}
/// <summary>
/// Конструктор
/// </summary>
public CustomComboBox()
{
InitializeComponent();
}
/// <summary>
/// Добавить элемент
/// </summary>
/// <param name="item"></param>
public void AddItem(string item)
{
if (item == null)
{
return;
}
comboBox.Items.Add(item);
}
/// <summary>
/// Очистить список
/// </summary>
public void Clear()
{
comboBox.Items.Clear();
}
/// <summary>
/// Смена значения
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void comboBox_SelectedValueChanged(object sender, EventArgs e)
{
_onValueChangedEvent?.Invoke(sender, e);
}
}
}