【发布时间】:2023-03-28 15:53:02
【问题描述】:
我有一个 .net winforms 列表框,并使用 .Add() 向其中添加了项目。我更改了列表中的一个对象,使其 ToString() 方法现在返回不同的值,但该项目的显示值不会更新。我需要调用什么来告诉 ListBox 重新读取 ToString 值?
【问题讨论】:
我有一个 .net winforms 列表框,并使用 .Add() 向其中添加了项目。我更改了列表中的一个对象,使其 ToString() 方法现在返回不同的值,但该项目的显示值不会更新。我需要调用什么来告诉 ListBox 重新读取 ToString 值?
【问题讨论】:
如果您将相同的对象引用重新分配给相同的列表框项,列表框将刷新其显示值。例如:
Thingy thing = this.listBox1.Items[0];
thing.DoSomethingThatChangesToStringReturnValue();
this.listBox1.Items[0] = thing;
【讨论】:
由于您已经手动添加了项目,因此您需要清除列表框项目,然后重新添加它们。
当您使用 .ToString() 添加项目时,列表框仅具有字符串本身的副本 - 它无法知道项目已更改,或者它甚至基于项目。您必须自己处理。
【讨论】: