我已阅读此解决方案:How do I make a ListBox refresh its item text?
但是当对象的属性发生变化时,我仍然没有运气让listBox中显示的文本更新。
public partial class Form1 : Form
{
public BindingList<Channel> chanList = new BindingList<Channel>();
private void Form1_Load(object sender, EventArgs e)
{
lbChannels.DisplayMember = "Display";
lbChannels.DataSource = chanList;
}
}
public class Channel
{
public string Display
{
get
{
return ToString();
}
}
public override string ToString()
{
if(!unread || DateTime.Now.Second % 2 == 0)
return Name;
return "";
}
}
这里的目标是如果其中有未读数据,则导致频道名称在listBox中闪烁,但是当我测试它时没有任何反应。我也尝试过调用lbChannels.Refresh()和lbChannels.Update()。
我必须遗漏一些东西,但我无法弄清楚是什么。另一个线程中的解决方案似乎太简单了,但我已经多次查看过了,我找不到与listBox相关的任何其他内容。我在这里缺少什么?
答案 0 :(得分:0)
代码已经写在您提供的链接中,以同样的方式执行..这是更新的示例:
private void btnUpdate_Click(object sender, EventArgs e)
{
Employee selectedEmployee = (Employee)lstEmployees.SelectedItem;
selectedEmployee.Name = "Joseph";
if (selectedEmployee != null)
{
_employees[selectedEmployee.Id] =selectedEmployee;
}
}
请不要绑定到使用覆盖ToString方法的Display函数,该方法在Time in Seconds为偶数时有效,这是没有意义的。