C# - 编辑后组合框索引发生变化

发布于 2024-09-24 03:47:55 字数 271 浏览 4 评论 0原文

不久前,有人回答了我的问题,如何编辑加载文本文件的组合框,以及如何保存最近编辑的行。

C#:实时组合框更新

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

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

A moment ago someone answered my question on how to edit the combobox loaded with a text file, and how to save the recently edited line.

C#: Real-time combobox updating

The problem now is that I can only change one letter before it updates, and then the selectedindex changes to -1, so I have to select the line I was editing again in the dropdown list.

Hopefully someone knows why it's changing index, and how to stop it from doing that.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

眉目亦如画i 2024-10-01 03:47:55

根据我对这个问题的理解,你可以做一件事。在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 事件处理程序方法中。
希望有帮助

As my understanding of the problem goes, you can do one thing. In the comboBox1_TextChanged method, instead of putting the previous code, you can just set a bool variable, say textChangedFlag to true and you can set the default value of this variable as false.
And then use KeyDown event to edit the combobox item.
I will give a sample code.

Sample Code:

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

            }
        }

You can put this code in KeyDown event handler method.
Hope it helps

高跟鞋的旋律 2024-10-01 03:47:55
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;
    }
}
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;
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文