在列表框中重命名一个项目

5

我想要在列表框中重命名所选项目。 我该如何做到这一点? 谢谢。

2个回答

5

编辑:数年后重新审视此问题;以下是根据您所使用的 UI 框架进行更改选定文本的方法。假设您想要更改所选文本。

ASP.Net WebForms

protected void ChangeListBoxSelectedItemText(string textToChangeTo)
{
    lstBoxExample.SelectedItem.Text = textToChangeTo;
}

WPF - 假设ListBox包含Label对象

// To achieve this in WPF you have to cast the object
// This is because a ListBox can contain numerous types of UI objects
var selectedLabel = (Label)lstBoxExample.SelectedItem;
selectedLabel.Content = "Text to change to";

WinForms

// There may very well be a better way to do this
lstBoxExample.Items[lstBoxExample.SelectedIndex] = "New Item";

ListBox.SelectedItem 的类型是 Object。上次我检查时,System.Object 没有 Text 成员。这对于 System.Windows.Forms.ListBox(WinForms)和 System.Windows.Controls.ListBox(WPF)都是正确的。 - Tergiver
2
啊,这正表明了指定使用哪个UI框架是多么重要。你只是碰巧运气好,他们恰好使用的是ASP.Net,因为正如我已经说过的,对于WinForms或WPF来说并不是真实的情况。 - Tergiver
如之前的评论所示,我的列表框中没有“.Text”。 - barlop
@Tergiver 多年后重访!你的确是对的,UI框架没有被指定,我已经更新了答案,提供了WebForms、WPF和WinForms的示例。希望这能帮助未来遇到类似问题的人。 - Luke Merrett

1

ListBox 包含对象。你所说的“重命名”一个项目是什么意思?

如果你想改变列表中显示的文本,你需要更改对象,使其 ToString 方法返回所需的文本。

通常情况下,你可能会在 ListBox 中存储字符串,在这种情况下,为了“重命名”一个项目,你需要删除旧项目并在相同的索引中插入新文本。


1
他的意思是更改所选项目的名称。有什么难以理解的呢? - cagri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接