This repository has been archived on 2024-01-16. You can view files and clone it, but cannot push or open issues or pull requests.
custom-popup-demo/ComboBoxDemo/EmployeePicker.cs

73 lines
2.4 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows.Forms;
namespace CustomPopupDemo
{
public partial class EmployeePicker : UserControl
{
class EmployeePickerItem
{
public string Code { get; set; }
public string Name { get; set; }
}
TextBox TargetTextBox { get; set; }
private ToolStripDropDown Popup
{
get {
return (Parent is ToolStripDropDown popup) ? popup : null;
}
}
public EmployeePicker(TextBox input)
{
InitializeComponent();
List<EmployeePickerItem> options = new List<EmployeePickerItem>() {
new EmployeePickerItem() {Code = "001", Name = "John Doe"},
new EmployeePickerItem() {Code = "002", Name = "Jane Doe"},
new EmployeePickerItem() {Code = "003", Name = "Steve Jobs"},
new EmployeePickerItem() {Code = "004", Name = "Bill Gates"},
new EmployeePickerItem() {Code = "005", Name = "Jeff Bezos"},
new EmployeePickerItem() {Code = "006", Name = "Mark Twain"},
new EmployeePickerItem() {Code = "007", Name = "Yoh Asakura"},
new EmployeePickerItem() {Code = "008", Name = "Ruby Rose"},
new EmployeePickerItem() {Code = "009", Name = "Rintarou Okabe"},
new EmployeePickerItem() {Code = "010", Name = "Kurisu Makise"},
new EmployeePickerItem() {Code = "011", Name = "Weiss Schnee"},
new EmployeePickerItem() {Code = "012", Name = "Nokz LeBron"},
};
mainListBox.DataSource = new BindingList<EmployeePickerItem>(options);
mainListBox.DisplayMember = "Name";
mainListBox.ValueMember = "Code";
TargetTextBox = input;
}
private void Close()
{
Popup.Close();
Dispose();
}
private void MainListBox_DoubleClick(object sender, EventArgs e)
{
TargetTextBox.Text = mainListBox.SelectedValue.ToString();
Close();
}
private void MainListBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode != Keys.Enter) {
return;
}
TargetTextBox.Text = mainListBox.SelectedValue.ToString();
Close();
}
}
}