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 MyUserControls { public partial class SmartCheckedListBox : UserControl { public event EventHandler SelectionChanged; public SmartCheckedListBox() { InitializeComponent(); } // Метод для добавления элемента в список public void AddItem(string item) { if (!string.IsNullOrEmpty(item) && !checkedListBox.Items.Contains(item)) { checkedListBox.Items.Add(item); } } // Метод для очистки списка public void ClearItems() { checkedListBox.Items.Clear(); } // Публичное свойство для получения и установки выделенного значения public string SelectedValue { get { if (checkedListBox.SelectedItem != null) return checkedListBox.SelectedItem.ToString(); return string.Empty; } set { for (int i = 0; i < checkedListBox.Items.Count; i++) { checkedListBox.SetItemChecked(i, false); if (checkedListBox.Items[i].ToString() == value) { checkedListBox.SetItemChecked(i, true); checkedListBox.SelectedIndex = i; } } } } // Метод, вызываемый при изменении выбора protected virtual void OnCheckedListBoxSelectedIndexChanged(object sender, EventArgs e) { SelectionChanged?.Invoke(this, e); SelectedValue = SelectedValue; } } }