Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2011, 18:07   #1
bondik
Форумчанин
 
Регистрация: 24.04.2008
Сообщений: 300
По умолчанию C# перерисовать когда надо

Помогите разобраться до конца. Собственно такая задача:
есть listbox . Из любого места в коде нужно изменить цвет любого элемента.
С событием перерисовки все понятно:
сам обработчик:
Код:
 private void lstBox_DrawItem(object sender,
              System.Windows.Forms.DrawItemEventArgs e)
        {
            
            
                // Перерисовываем фон всех элементов ListBox.  
                e.DrawBackground();
                
                // Создаем объект Brush.  
                Brush myBrush = Brushes.Black;

               
                    myBrush = Brushes.DeepSkyBlue;
                    e.Graphics.DrawString(
                      ((ListBox)sender).Items[e.Index].ToString(),
                      e.Font, myBrush, e.Bounds,
                      StringFormat.GenericDefault);
                


                // Если ListBox в фокусе, рисуем прямоугольник   
                //вокруг активного элемента.  
                e.DrawFocusRectangle();
            
        }
И подписываемся на событие
Код:
this.listBox1.DrawItem +=   
    new System.Windows.Forms.DrawItemEventHandler(  
    this.lstBox_DrawItem);
По поводу моей проблемы,есть только одна идея завести глобальную переменную с номером нужного элемента,потом в нужном месте вызывать перерисовку и если глобальная переменная не равна нулю то перерисовываем элемент который в ней находится(его номер).
Может можно как-нибудь красивее?
bondik вне форума Ответить с цитированием
Старый 19.10.2011, 08:33   #2
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Сделай новое событие, при вызове которого будет вызываться твоя функция, аргументом события будет номер элемента и\или цвет. Я думаю, что так будет правильнее. Смотри в сторону Action.
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как перерисовать picturebox ? vedro-compota Общие вопросы .NET 1 21.01.2011 01:36
Как перерисовать приложение? Merowing Общие вопросы C/C++ 1 19.04.2010 13:59
Когда надо свернуть форму... Slash Общие вопросы Delphi 5 11.09.2007 18:11
Как узнать когда браузер скачивает, а когда нет? iPod Работа с сетью в Delphi 1 07.05.2007 15:16