Я пытался добавить элементы разного цвета в свой список и наткнулся на эта ссылка. Я попытался внедрить его в свой проект. Но теперь у меня есть большая проблема: источником данных списка является Binding List, в нем есть рабочий Displaymember и все такое, но после его вставки (что необходимо для изменения цвета):
lbx_robots.DrawMode = DrawMode.OwnerDrawFixed;
Член дисплея, кажется, игнорируется, и вместо того, чтобы видеть имя элемента, я просто вижу Robogotchi.Robot, так же, как когда у меня вообще нет члена дисплея.
Класс, в котором находится большая часть проблемного кода:
public Robogotchi()
{
InitializeComponent();
//test BEGIN; DELETE LATER
Robot robot = new Robot();
robot.State = Robot.stateofrobot.Einwandfrei;
robot.Name = "test";
int abc = Convert.ToInt32(robot.State);
robotlist.Add(robot);
lbx_robots.DataSource = robotlist;
lbx_robots.DisplayMember = "Name";
lbx_robots.Refresh();
//test END; DELETE LATER
//stuff to change the color of listbox items
//lbx_robots.BackColor = Color.Beige;
lbx_robots.DrawMode = DrawMode.OwnerDrawFixed;
lbx_robots.DrawItem += new DrawItemEventHandler(listBox1_SetColor);
}
И вот что появляется в моем списке, когда я его запускаю: Снимок экрана моего списка с неработающим дисплеем< /а>
listBox1_SetColor
, но я чувствую, что вы следуете приведенному вами примеру. В этом случае, когда у вас есть объектRobot
, вы НЕ хотите вызыватьToString()
, а напрямую читать его свойствоName
(когда владелец отрисовывает это на ваше усмотрение, элемент управления не будет этого делать). - person Adriano Repetti   schedule 14.05.2020