Я добавил обработчик событий в ComboBox.Leave , этот код будет добавлять вновь введенную строку в комбинированном списке в базовый список (страны), а также обновлять привязку комбинированного списка к нему.
Ограничения
- Вам придется обработать добавление нового элемента в зависимости от типа источника данных, который у вас есть.
-
List.Contains
чувствителен к регистру, вы можете хранить все строки в одном регистре. И преобразуйте введенное пользователем значение в этот случай, прежде чем принять решение о добавлении его в источник данных.
Итак, измените обработчик событий comboBox1_Leave в соответствии с вашими типами данных и источником данных.
public partial class Form1 : Form
{
private List<string> countries;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
countries = new List<string>();
countries.Add("Australia");
countries.Add("Belgium");
countries.Add("Canada");
comboBox1.DataSource = countries;
}
private void comboBox1_Leave(object sender, EventArgs e)
{
ComboBox combo = (sender as ComboBox);
CurrencyManager cm = (combo.BindingContext[combo.DataSource] as CurrencyManager);
if (!cm.List.Contains(combo.Text))
{
cm.List.Add(combo.Text);
cm.EndCurrentEdit();
cm.Refresh();
cm.Position = cm.Count - 1;
}
}
}