Указание цвета для элемента списка из drawItemEventHandler - PullRequest
0 голосов
/ 03 августа 2011

Вот код, который я должен указать цвет конкретной строки ListBox:

private void listBox1_DrawItem(object sender, DrawItemEventArgs e, Color color) {
    e.DrawBackground();
    Graphics g = e.Graphics;

    g.FillRectangle(new SolidBrush(Color.Silver), e.Bounds);

    g.DrawString(Text, e.Font, new SolidBrush(color), e.Bounds);

    e.DrawFocusRectangle();
}

Я хочу иметь возможность передавать цвет этому методу, но не совсем знаю, как сказатьметод, какой цвет использовать, когда он вызывается.Как мне это сделать?

Ответы [ 3 ]

2 голосов
/ 03 августа 2011

Просто используйте приватное поле вашего класса. Или, если цвет должен основываться на том, какой именно элемент рисуется, типичный случай, тогда используйте e.Index, чтобы узнать, какой элемент рисуется. Остерегайтесь -1.

1 голос
/ 03 августа 2011

listBox_DrawItem не содержит параметр Color, и вы не можете добавить его.

Правильные параметры для события drawItem списка должны быть listBox_DrawItem (отправитель объекта, DrawItemEventArgs e)

Я думаю, что здесь вы найдете лучший подход для достижения желаемого: C # Listbox.DrawItem для окраски каждой строки

0 голосов
/ 03 августа 2011

Надеюсь, я не понял вашего вопроса, но разве цвет фона и переднего плана уже доступен в параметре drawitemEventArgs?

Если это так, нет необходимости добавлять третий параметр (цвет).

Кроме того, на мой взгляд, это не будет хорошей практикой, поскольку вы заметите (рассматривая другие обработчики событий в вашем приложении), что .net стандартизирует все события как имеющие 2 параметра: «отправитель» и «e "параметр, который может быть любого типа.

Но дважды проверьте этот параметр drawItemEventArgs.Я считаю, что цвет есть и может быть установлен.

спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...