C#从列表框选择中显示textBox中的特定对象项

时间:2011-10-29 01:30:19

标签: c# list casting

我有一个类Client,一个Class Assignment和一个静态类Clients,它有一个静态列表。 Client类构造函数接受Assignment对象。创建客户端和分配对象后,将客户端添加到静态列表中。

我的问题在于用户需要能够在列表框中选择任何客户端,并将“分配描述”值显示在文本框中。如何在不收到错误的情况下执行此操作,告诉我“无法将类型'System.String'的对象强制转换为'Rimu.Client'。”

private void clientListBox_MouseClick(object sender, MouseEventArgs e)
{
    if (clientListBox.SelectedItem != null)
    {
        Client current = (Client)clientListBox.SelectedItem;
        current.CurrentAssignment.Description = descriptionText.Text;
    }
}

任何帮助将不胜感激,提前致谢。

2 个答案:

答案 0 :(得分:0)

我会将您的客户端对象存储在字典中。 “词典”中每个项目的键将是您放入ListBox的名称。

然后,当选择ListBox中的项目时,您可以从字典中获取该对象。

您收到错误是因为您无法将字符串强制转换为任意对象。

答案 1 :(得分:0)

由于您想直接从ListBox转换SelectedItem,您必须将它们直接添加到列表框中,如下所示:

foreach (var client in Clients) 
{
  clientListBox.Add(client);
}

现在Client对象存储在ListBox中,但在winform(或wpf应用程序,您未指定)上显示给用户的字符串将是对用户没有多大意义的类名。

要修复此问题,请覆盖Client类的ToString()方法

public class Client
{
  // you've already written this

  public override string ToString() 
  {
    // construct a meaningful string here
    return string.Format("{0} {1}", this.FirstName, this.LastName);
  }
}