Мой флажок в C # показывает тип объекта для отображения, но не имя - PullRequest
0 голосов
/ 16 декабря 2009

У меня проблема с отображением объекта в поле с проверенным списком в C #. Я могу добавить объект в порядке, но когда объект отображается пользователю, в программу выводит флажок выбора как Salesform.order вместо вызова метода tostring в классе заказа, как я хочу. В результате несколько заказов отображаются одинаково: «Salesform.order».

orderCheckList.Items.Add(orderUp);

(здесь orderUp - это заказ с такими полями, как имя клиента и т. Д.)

Кто-нибудь может помочь? Я знаю, что есть простое решение, которое я пропускаю.

Ответы [ 2 ]

6 голосов
/ 16 декабря 2009

Установите DisplayMember для CheckedListBox для свойства, которое вы хотите отобразить. Например:

orderCheckList.DisplayMember = "Title";
// Now orderUp.Title will be displayed

(Переопределение ToString() также будет работать, как предложено Ragepotato, но использование DisplayMember более гибко, поскольку означает, что вы можете использовать один и тот же тип данных в различных контекстах.)

Пример кода:

using System.Windows.Forms;

class Test
{
    static void Main()
    {
        Form f = new Form
        {
            Controls =
            {
                new CheckedListBox
                {
                    Items = 
                    {
                        new { FirstName = "Jon", LastName = "Skeet" },
                        new { FirstName = "Holly", LastName = "Skeet" }
                    },
                    DisplayMember = "FirstName"
                }
            }
        };
        Application.Run(f);
    }
}
4 голосов
/ 16 декабря 2009

.ToString() вызывается для каждого элемента, который вы добавляете в список. Переопределите это, чтобы решить эту проблему.

...