Здравствуйте, Igor_P, Вы писали:
I_P>Здравствуйте, realchel, Вы писали:
R>>Собственно проблему не описываю.
I_P>А зря
I_P>Что значит прикрутить? показывать контрол в клеточках датагрида или что-то еще? Кстати DataGridView у себя я не нашел, может это фишка .NET 2.0?
I_P>Сам как-то прикручивал комбобокс, аналогично dateTimePickerу
Есть свой контрол который наследуется от TextBox
В контроле на событие Validating весит обработка, введенные значения проверяются,и если не соответсвуют нужным,выдается сообщение.
И соотвественно из контрола не выходим.
cancel=true
Решил этот контрол сделать в виде колонки в DataGridView
Взял общеизвестный пример с DataTimePiсker
Все отлично привязалось,даже свои свойства к колонке добавил.
Но вот проблема.
Когда я в таблице,уже при редактировании ячейки со своим контролом жму Enter или выхожу по TAB.
То сробатывает событие Validating в моем контроле,где идет проверка на корректность введенных данных.Все отлично,так должно быть.
И если значение не корректное,то я присваиваю Cancel=true
Что бы запретить выходить из контрола.
Но вот DataGridView на это чихал, и спокойно переходит в другую ячейку.
Выяснилось,что у класса DataGridViewEditingConlrol
событие DetachEditingControl срабатывает раньше чем Valideting в моем контроле.
Как вариант было переопределить onDetachEditingControl в своем DataGridViewEditingControl и не вызвать метод базового класса
DetachEditingControl. Но как я уже сказал выше, последовательность сработки событий происходит не так как хотелось бы.
Щас попробовал еще вариант с переопределением onDetachEditingControl в котором не вызываю метод базового класса.
А методе onValideting(он переопеределен от моего контрола) в классе
DataGridViewEditingConlrol, вызывать метод onDetachEditingControl ,
если значение корректное. Но блин, DataGridView всеравно скачит в следующую ячейку.
Что еще сделать ума не приложу.
Как то же стандартные контролы корректно работают. Допустим тот же календарь.