Как вызвать событие в форме загрузки
Я использую этот код, чтобы поместить изображение в список, но текст не отображается. Когда я нажимаю на список, то он показывает. В чем проблема?
form_load()
{
listbox1.Items.Add("string");
listbox1.DrawMode = DrawMode.OwnerDrawVariable;
}
private void listbox1_DrawItem(object sender, DrawItemEventArgs e)
{
ListBox lst = sender as ListBox;
e.Graphics.DrawImage(imageList1.Images[0], 0, 0, 10, 10);
e.Graphics.DrawString(lst.Text, this.Font,SystemBrushes.ControlDark, 11, 0);
}
1 ответ
Ну, похоже, вы неправильно рисуете свои предметы. DrawItem
Событие вызывается для каждого элемента в списке, но вы все время рисуете один и тот же текст в одной и той же позиции. Вы должны использовать e.Bounds
определить положение каждого предмета. Также вы можете справиться MeasureItem
событие для установки пользовательских границ для каждого элемента, если вам нужны нестандартные размеры.
Также lst.Text
здесь не имеет особого смысла, это должен быть текст текущего элемента для рисования, основанный на e.Index
,
Таким образом, часть вашей строки рисования кода может выглядеть примерно так:
e.Graphics.DrawString(lst.GetItemText(lst.Items[e.Index]),
this.Font, SystemBrushes.ControlDark, e.Bounds.Left, e.Bounds.Top);
Также вы можете найти полезный пример на MSDN.