自动选择列表框中的重命名项目

时间:2015-05-19 03:12:48

标签: c# forms listbox selectedindex

我有一个包含许多项目的列表框(列表框中的每个项目都来自数据源)。这些物品按名称排序。我有一个主要形式的按钮。当我在列表框中选择一个项目并单击该按钮时,该项目将以新的形式出现。我可以在新表单中编辑所选项目的名称。关闭新表单后,项目已重命名,列表框将重新排序。

如何自动重新选择已更改名称及其在列表框中位置的原始项目?

FindString无法正常工作,因为它已经重命名。可能有一个函数可以通过使用item的值来使用SelectedIndex

示例数据:

[a1, a2, a3, a4, a5][ a1, a3, a4, a5, b2 ]

1 个答案:

答案 0 :(得分:0)

根据我的理解,您有FormA,其中包含已排序项目的列表。您选择一个项目,然后按一个按钮打开一个新的FormB,然后重命名该项目。返回FormA后,您希望已选择最近重命名的项目。您遇到的问题是您无法使用FindString()在列表中找到该项目,因为项目已从命名为“a2”更改为“b2”而FindString()不再找到“a2”。

如果是这种情况,简单的解决方案是在FormB上创建一个公共属性,用于存储项目的新名称。此过程已在此处说明:How to return a value from a Form in C#?

示例:

public string ReturnValue1 {get;set;}

private void btnOk_Click(object sender,EventArgs e)
{
    this.ReturnValue1 = "b2";
    this.Close();
}

从FormB返回后,只需使用FindString()和ReturnValue1来获取要选择的项目的索引。

var result = form.ShowDialog();
if (result == DialogResult.OK)
{
    string val = form.ReturnValue1; //value preserved after close
    int index = listBox.FindString(val);
    listBox.SetSelected(index,true);
}