2009-03-17 2 views
0

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

ответ

0

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

+0

Я бы хотел, но если я не получу ответ для http://stackoverflow.com/questions/654330/can-i-have-an-offscreen-control, я застрял в синхронизации положения элемента управления , – Simon

1

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

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

+0

Уже сделал - http://stackoverflow.com/questions/225972/how-do-i-host-a-control-in-a-datagridviewcell-for-displaying-as-well-as-editing - получил один ответ, что было неправильно. – Simon