It's because you are clearing the strings, which moves the caret to the start of the text.
private void comboBox1_KeyPress(object sender, KeyPressEventArgs e)
{
comboBox1.Items.Clear();
}
Will give the same effect.
To cure it try this:
private void comboBox1_KeyPress(object sender, KeyPressEventArgs e)
{
int posn = comboBox1.SelectionStart;
comboBox1.Items.Clear();
comboBox1.SelectionStart = posn;
}
It's not perfect - I haven't tried it with any selected text etc. - but that's the only way I know to get and set the caret position in a ComboBox