Немного другой подход - не используйте список.Вместо того, чтобы использовать этот элемент управления, ограничивающий меня ограниченным набором свойств и методов, я создаю собственный список.
Это не так сложно, как кажется:
int yPos = 0;
Panel myListBox = new Panel();
foreach (Object object in YourObjectList)
{
Panel line = new Panel();
line.Location = new Point(0, Ypos);
line.Size = new Size(myListBox.Width, 20);
line.MouseClick += new MouseEventHandler(line_MouseClick);
myListBox.Controls.Add(line);
// Add and arrange the controls you want in the line
yPos += line.Height;
}
Пример дляОбработчики событий myListBox - выбор строки:
private void line_MouseClick(object sender, MouseEventArgs)
{
foreach (Control control in myListBox.Controls)
if (control is Panel)
if (control == sender)
control.BackColor = Color.DarkBlue;
else
control.BackColor = Color.Transparent;
}
Приведенные выше примеры кода не были протестированы, но описанный метод использовался и оказался очень удобным и простым.