Как узнать, является ли элемент управления в настоящее время недействительным? - PullRequest
0 голосов
/ 17 марта 2009

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

Ответы [ 2 ]

1 голос
/ 17 марта 2009

Вам не нужно «слушать» недействительное событие. Когда пользовательский элемент управления становится недействительным, onpaint вызывается автоматически.

Возможно, есть лучший способ решить вашу конечную проблему (нарисовать ваше собственное представление данных). Вы можете попытаться опубликовать подробный вопрос о вашей реализации и попросить несколько идей о том, как это сделать, чтобы вам не пришлось обходить эти (на первый взгляд странные) проблемы.

0 голосов
/ 17 марта 2009

Звучит так, как будто вы хотите переопределить член Paint класса DataGridViewCell, а не пытаться прослушивать и отвечать на недействительные события. Базовый класс позаботится об этом за вас и предоставит графический объект и информацию о местоположении непосредственно в метод Paint

...