如何在写东西时停止绑定源以查找数据

时间:2013-03-04 05:55:10

标签: c# winforms combobox

我的问题是当我在文本框中写东西时,我的组合框清除了它的选择。这只发生在一个特定的组合框中,使用下面的代码进行数据绑定。

private void FillEmployemenetType()
{
    var items = new BindingList<KeyValuePair<string, string>>();

    items.Add(new KeyValuePair<string, string>("C", "Contract"));
    items.Add(new KeyValuePair<string, string>("P", "Permanent"));
    items.Add(new KeyValuePair<string, string>("V", "Vacation"));

    contractTypeComboBox.DataSource = items;
    contractTypeComboBox.ValueMember = "Key";
    contractTypeComboBox.DisplayMember = "Value";
    contractTypeComboBox.SelectedIndex = 0;
} 

我没有解雇任何文本更改事件或为此编写任何代码。 我使用这个窗口形式的绑定源,以防可能出现问题。

1 个答案:

答案 0 :(得分:0)

您可以在设置数据源后尝试设置SelectedItem,以便重新选择上一项。

private void FillEmployemenetType()
{
    KeyValuePair<string,string>? previous = null;
    if (contractTypeComboBox.DataSource != null) {
        previous = (KeyValuePair<string,string>)contractTypeComboBox.SelectedItem;
    }

    var items = new BindingList<KeyValuePair<string, string>>();

    items.Add(new KeyValuePair<string, string>("C", "Contract"));
    items.Add(new KeyValuePair<string, string>("P", "Permanent"));
    items.Add(new KeyValuePair<string, string>("V", "Vacation"));

    contractTypeComboBox.DataSource = items;
    contractTypeComboBox.ValueMember = "Key";
    contractTypeComboBox.DisplayMember = "Value";
    //contractTypeComboBox.SelectedIndex = 0;
    if (previous.HasValue) {
        try {
            contractTypeComboBox.SelectedItem = previous;
        }
        catch { }
    }
}