C # отображение определенных элементов объекта в текстовом поле из списка выбора - PullRequest
0 голосов
/ 29 октября 2011

У меня есть класс 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 голосов
/ 29 октября 2011

Поскольку вы хотите привести SelectedItem непосредственно из ListBox, вы должны добавить их непосредственно в список, например:

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

Теперь объекты Client хранятся в ListBox, но строкапользователю, отображаемому в winform (или wpf-приложении, которое вы не указали), будет имя класса, которое не очень важно для пользователя.

Чтобы исправить это переопределение, метод ToString () класса Client

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);
  }
}
0 голосов
/ 29 октября 2011

Я бы сохранил ваши клиентские объекты в словаре. Ключом к каждому элементу в Словаре будет Имя, которое вы помещаете в ListBox.

Затем, когда элемент в ListBox выбран, вы можете получить объект из словаря.

Вы получаете ошибку, потому что не можете привести строку к произвольному объекту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...