gpt4 book ai didi

C# ListBox 更新项目更改

转载 作者:行者123 更新时间:2023-11-30 14:40:25 25 4
gpt4 key购买 nike

我有一个自定义对象列表,我已将其添加到我的 WinForms C# 4.0 应用程序中的 ListBox 控件中。

当用户在 ListBox 中选择特定元素时,该对​​象的属性会出现在各个输入字段中 ListBox 旁边的窗口中。用户可以更改这些并单击“保存”,这将修改对象的数据成员以与用户所做的更改相对应。

该功能确实有效。值被保存到对象中,当用户再次选择该元素时,他们的更改被确认正确保存。

不起作用的是列表框中文本的更新。例如,如果我们在 ListBox 中有一个员工列表,我们可以在那里看到“John Smith”,我们可以单击他的名字 - 将他的名字编辑为“John Smithe”,然后单击“确定”。 ListBox 仍然显示“John Smith”,但是如果我们单击他的名字,那么在右侧的 TextBoxes 中我们可以看到他的名字已正确更改为“John Smithe”。

我试过在 ListBox 上调用 Refresh() 方法,但这没有用。

我可以通过从 ListBox 中删除项目并再次添加来修复它。这行得通,而且这不是真正的问题,因为这些项目无论如何都存储在单独的列表中,所以我没有失去任何员工的风险。

但这真的是最好的方法吗?有没有更优雅的方法来更新 ListBox 中的文本而无需再次删除/添加项目?

最佳答案

ListBox 中的对象是否实现 INotifyPropertyChanged

更新:

看来你可以通过几个步骤解决问题:

  1. ListBoxDisplayMember 属性设置为您的对象的一个​​属性,该属性提供您希望在列表中显示的任何内容。对于这个答案,我假设此属性被命名为 DisplayText
  2. 让对象实现 INotifyPropertyChanged
  3. 在影响 DisplayText 值的所有属性的 setter 中,使用 DisplayText 作为属性名称引发 NotifyPropertyChanged 事件。

然后你就可以开始了。

关于C# ListBox 更新项目更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5293539/

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