namespace CustomComponents { public partial class Frame : UserControl { private event EventHandler? _valueChanged; private string? SelectedValue = string.Empty; public event EventHandler ValueChanged { add { _valueChanged += value; } remove { _valueChanged -= value; } } public Frame() { InitializeComponent(); } public void PopulateList(List data) { if (data.Count == 0 || data is null) { return; } listBox.Items.AddRange(data.ToArray()); } public void Clear() { listBox.Items.Clear(); } public string? Value { get { return SelectedValue; } set { SelectedValue = value; } } private void SelectedValue_Changed(object sender, EventArgs e) { var element = sender as ListBox; Value = element.Text.ToString(); _valueChanged?.Invoke(this, e); } } }