gpt4 book ai didi

C#:实时组合框更新

转载 作者:太空狗 更新时间:2023-10-29 23:34:54 25 4
gpt4 key购买 nike

我一直在尝试将文本文件加载到组合框中,然后制作一个按钮以将我在组合框中所做的任何更改保存回文本文件。

问题是,当我在组合框中键入内容时,所选的“项目”不会更新。我可以更改句子,但一旦我单击“保存”按钮(这也会更新组合框),它就会回到我编辑之前的状态。

此外,当我编辑组合框并单击下拉箭头时,它会显示文本文件的内容,同样没有我编辑的句子。

我已经搜索了一段时间,但到目前为止似乎还没有人知道该怎么做。 :P

private void cbBanken_SelectedValueChanged(object sender, EventArgs e)
{
this.cbBanken.Update();
}

我认为类似的东西可能会起作用,但它没有任何作用。更改后,我确实设法将新项目添加到列表中,但这不是我想要的。我希望能够编辑项目,而不是添加新项目。

我希望这足够详细。感谢您的宝贵时间!

编辑:好的,还有一件事:“它只会更新我更改的第一个字符。所以如果我在任何地方使用退格键,它都会更新,然后我必须重新启动才能再次更新。此外,它会去在组合框行的最左侧,这可能非常烦人。如果有人也知道如何解决这个问题,我将非常感激。”

我目前正在使用这段代码:

private void comboBox1_TextChanged(object sender, EventArgs e) 
{
if(comboBox1.SelectedIndex>=0)
{
int index = comboBox1.SelectedIndex;
comboBox1.Items[index] = comboBox1.Text;
}

}

最佳答案

ComboBox.Update 方法只是重绘组合框区域。据我了解,您想在运行时更改组合框选定的项目。在这种情况下,您可能希望使用 TextUpdate 事件。 Combobox 选中索引后自动停止编辑。所以还有另一种方法。跟踪值的变化。这是一个代码片段:

    private int editedIndex = -1;
private String editString = "";
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (editedIndex == comboBox1.SelectedIndex) return;
if(editedIndex>0) comboBox1.Items[editedIndex] = editString; //Change the previous item
if(comboBox1.SelectedIndex>=0) //get new item parameters
{
editedIndex = comboBox1.SelectedIndex;
editString = comboBox1.Items[editedIndex].ToString();
}
}


private void comboBox1_Leave(object sender, EventArgs e)
{
if(editedIndex>=0)
comboBox1.Items[editedIndex] = editString;
}

private void comboBox1_TextUpdate(object sender, EventArgs e)
{
if (editedIndex >= 0)
{
editString = comboBox1.Text;
}
}

private void comboBox1_KeyDown(object sender, KeyEventArgs e)
{
if(e.KeyData==Keys.Enter&&editedIndex>=0)
comboBox1.Items[editedIndex] = editString;
}

关于C#:实时组合框更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3750990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com