Как да зададете брой елементи в списъчната кутия, съставена от собственика

Внедрих методите MeasureItem и DrawItem в моето списъчно поле, начертано от собственика на C#.

Нищо не се показва.

От отчаяние добавих три произволни низа към колекцията с артикули и ПЪРВИТЕ ТРИ ОТ МОИТЕ АРТИКУЛИ СЕ ПОКАЗАХА!

Това ми казва, че списъчната кутия не е знаела, че има елементи. Трябва ли да добавя стотици фиктивни артикули към колекцията с артикули, само за да видя МОИТЕ артикули?? Това е дингбати; трябва да има начин да се КАЖЕ на списъка колко елемента има -- просто не мога да го намеря!

Как се задава броят на елементите в списъчно поле, съставено от собственика?

Кодът:

private void listVersions_MeasureItem (object sender, MeasureItemEventArgs e)
{
    e.ItemHeight = font.Height + 6;
}

private void listVersions_DrawItem (object sender, DrawItemEventArgs e)
{
    if (entries == null)
        return;

    int i = e.Index;

    if (i < 0 || i >= entries.Count)
        return;

    e.Graphics.FillRectangle (new SolidBrush (BackColor), e.Bounds);
    VersionEntry ent = entries[i];
    Rectangle rect = e.Bounds;
    Graphics g = e.Graphics;

    g.DrawString (i.ToString () + "  " + ent.name, font, Brushes.Black, rect.Location);
}

person user20493    schedule 21.11.2013    source източник
comment
Можете ли да покажете вашия код?   -  person crthompson    schedule 22.11.2013
comment
Закрепете това към поста си.. ще изглежда много по-добре. Освен това може би търсите OnPropertyChanged?   -  person crthompson    schedule 22.11.2013
comment
Не виждам как OnPropertyChanged ще помогне; нищо не се променя: просто искам да покажа списък.   -  person user20493    schedule 22.11.2013
comment
entries е списък, който съдържа елементите за рисуване. Цялата цел на списъка, съставен от собственика, е да показва записи. И когато добавя фиктивни елементи към колекцията "Елементи", елементите на вписванията се изчертават правилно. ИЗГЛЕЖДА, ЧЕ ЕДИНСТВЕНИЯТ ПРОБЛЕМ Е ДА КАЖЕШ НА СПИСЪЧНИКА КОЛКО ЕЛЕМЕНТА ИМА.   -  person user20493    schedule 22.11.2013


Отговори (2)


Опитайте да направите DataSource на вашия ListBox ваша колекция от записи:

listVersions.DataSource = entries
person LarsTech    schedule 21.11.2013

Това може да помогне: http://msdn.microsoft.com/en-us/library/windows/desktop/bb761340%28v=vs.85%29.aspx

Те (уж) имат LB_SETCOUNT съобщение, което може да бъде изпратено до списъчно поле.

Microsoft наистина трябва да предостави метод SetCount () в CListBox, но те често пропускат методите, от които се нуждаете за приложения, които не са играчки. Гррр...

person Alan8    schedule 11.05.2014