| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка Windows Forms > Обработчики событий DataGrid |
| Автор: tos84 26.12.2009, 17:21 | ||||
| C# изучаю недавно, так что если вопрос глупый, сильно не пинайте. Как из обработчика одного события вызвать обработчик другого события? Есть два события data grida – CellMouseEnter и CellPainting Есть код, но он не работает так как хотелось бы. Закрашивается только стартовая ячейка.
А хотелось бы, чтобы когда мышка наводится на ячейку, в curRow и curCol записывались номер столбца и строки, а затем эти значения передавались в обработчик события CellPainting. Если написать вот так, то не работает, выдает ошибку.
|
| Автор: tol05 26.12.2009, 18:03 | ||
а почему бы так не сделать?
|
| Автор: tos84 26.12.2009, 21:11 | ||||
| Этот вариант не подходит. Вопрос вытекает http://forum.vingrad.ru/forum/topic-285113.html, т.к. простого способа не нашлось, значит надо перерисовать ячейку и на нее добавить текст из этой ячейки с помощью e.Graphics.DrawString. Например для одной ячейки это будет выглядеть так:
Более жизненный пример, есть БД данные из которой отображаются в датагриде. БД обновляется. Нам, к примеру, надо чтобы в первой колонке, на заднем фоне, в зависимости от значения в этой ячейке рисовался еще один прямоугольник, пропорциональный этому значению. Вот код:
Тут уже без перерисовки ячейки не обойтись. Рисунок для наглядности. http://radikal.ru/F/s59.radikal.ru/i164/0912/f6/c24c377c36eb.jpg.html |
| Автор: tol05 26.12.2009, 22:11 | ||
тогда так попробуйте
|
| Автор: tos84 26.12.2009, 23:48 |
| Спасибо за подсказку! Работает. Только как сделать чтобы когда мышка выходит из этой ячейки, она становилась тогоже цвета что и была до этого, сообразить не могу. Зато нашел большой http://msdn.microsoft.com/ru-ru/library/7fb61s43.aspx, там вместо закраски рамка, будем разбираться. |
| Автор: tos84 27.12.2009, 09:46 | ||
| Получилось. При входе в клетку, она подсвечивается, при выходе, становится такой, как и была до этого.
Только я не могу понять КАК это работает. Когда мышка заходит в клетку и она закрашивается, это понятно. Но когда выходит - откуда берется цвет фона по умолчанию? Ну да ладно, главное что работет. Плюсы такого решения: Не "мерцают" другие клетки, при изменении цвета ячейки, как при использовании .Style.BackColor для грида. Вместо сплошной закраски, можно изобразить что-то свое, хоть рамку двойную. Простота и понятность, даже для новичка, по сравнению с http://msdn.microsoft.com/ru-ru/library/7fb61s43.aspx Думаю эта тема пригодится многим. Прикрепляю полностью готовый пример. tol05, еще раз спасибо за помощь. |