Hmm, seems awkward. I'd probably start by trying something like this:
private bool _addingItem = false;
private void comboBox_SelectionChangeCommitted(object sender, EventArgs e)
{
var ctrl = sender as ComboBox;
if (ctrl.SelectedItem.ToString() == "Add")
{
_addingItem = true;
ctrl.Focus();
}
}
private void comboBox_KeyDown(object sender, KeyEventArgs e)
{
if (!_addingItem)
{
return;
}
var ctrl = sender as ComboBox;
if (e.KeyCode == Keys.Enter)
{
if (!ctrl.Items.Contains(ctrl.Text))
{
ctrl.Items.Add(ctrl.Text);
ctrl.Invalidate();
e.Handled = true;
}
}
}
private void comboBox_Leave(object sender, EventArgs e)
{
_addingItem = false;
}
Obviously there are plenty of use cases to consider, but for the basic functionality the above seems like a reasonable start.