C# - 编辑后的组合框索引更改

时间:2010-09-20 12:56:02

标签: c# combobox indexing editing textchanged

刚才有人回答了我关于如何编辑装有文本文件的组合框的问题,以及如何保存最近编辑过的线。

C#: Real-time combobox updating

现在的问题是我只能在更新之前更改一个字母,然后selectedindex会更改为-1,所以我必须在下拉列表中再次选择我正在编辑的行。

希望有人知道为什么它会改变索引,以及如何阻止它这样做。

2 个答案:

答案 0 :(得分:4)

随着我对问题的理解,你可以做一件事。在comboBox1_TextChanged方法中,您可以只设置一个bool变量,例如textChangedFlag为true,而不是放置前面的代码,您可以将此变量的默认值设置为false。 然后使用KeyDown事件编辑组合框项目。 我将给出一个示例代码。

示例代码:

if (e.KeyCode == Keys.Enter)
        {
            if (textChangedFlag )
            {
                if(comboBox1.SelectedIndex>=0)
                {
                    int index = comboBox1.SelectedIndex;
                    comboBox1.Items[index] = comboBox1.Text;
                    textChangedFlag = false;
                }

            }
        }

您可以将此代码放在KeyDown事件处理程序方法中。 希望它有所帮助

答案 1 :(得分:3)

private int currentIndex;

public Form1()
{
    InitializeComponent();

    comboBox1.SelectedIndexChanged += RememberSelectedIndex;
    comboBox1.KeyDown += UpdateList;
}

private void RememberSelectedIndex(object sender, EventArgs e)
{
    currentIndex = comboBox1.SelectedIndex;
}

private void UpdateList(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter && currentIndex >= 0)
    {
        comboBox1.Items[currentIndex] = comboBox1.Text;
    }
}