делаю class DataGridViewDateCell : DataGridViewTextBoxCell на основе примера из статьи, в функции InitializeEditingControl не удаётся получить Value, пишет ошибку
Specified argument was out of the range of valid values.
Parameter name: rowIndex
Здравствуйте, Max404.NET, Вы писали:
MN>можно конечно использовать initialFormattedValue, оно предеётся нормально, но ведь это неправильно???
Да — это не очень красиво. По поводу ошибки — мало информации. Пример же из статьи работает? Значит смотрите — что меняли...
Или, если хотите, выкладывайте минимально-запускаемый код воспроизводящий ошибку — бум посмотреть...
<<Rule of Forum: После того, как вопрос задан... не поленитесь поставить отвечавшему оценку!>>
Re: DataGridView. Новый контрол в составе Framework 2.0. Час
Здравствуйте, Щербунов Нейл, Вторая часть на 5+. Как сделать неравномерные строки???? Проблема — нужно что бы в первой строке в первая колонка ячейка была DataGridViewTextBoxCell а в следующей строке в той же колонке уже с кнопкой DataGridViewButtonCell!
Re: DataGridView. Новый контрол в составе Framework 2.0. Час
, опубликованной в предыдущем номере RSDN Magazine.
Хочу продолжить тему насчет Размещение в ячейке пользовательского UserControl, я встроил в грид NumericUpDown все работает, но возникла проблема, для гибкости настройки хотелось бы менять некоторые свойства NumericUpDown из редактора(например DecimalPlaces, имеется естественно редактор в диалоге добавления/редактирования колонки), как можно реализовать данную функцию?
Re[3]: DataGridView. Новый контрол в составе Framework 2.0.
От:
Аноним
Дата:
27.10.07 08:37
Оценка:
Здравствуйте, Smarty, Вы писали:
S>Здравствуйте, Max404.NET, Вы писали:
MN>>можно конечно использовать initialFormattedValue, оно предеётся нормально, но ведь это неправильно???
S>Да — это не очень красиво. По поводу ошибки — мало информации. Пример же из статьи работает? Значит смотрите — что меняли... S>Или, если хотите, выкладывайте минимально-запускаемый код воспроизводящий ошибку — бум посмотреть...
Столкнулся с той же проблемой — решение банально.
Нужно внимательнее читать первую статью.
Скорее всего Grid у вас находится в виртуальном режиме. По этому получить что либо через this.Value невозможно.
Делай так- и все работает. Для виртуального режима — работает. для не виртуального не проверял. Думаю добавить if для проверки режима грида не сложно если нужда возникнет.
public override void InitializeEditingControl(int rowIndex, object initialFormattedValue, DataGridViewCellStyle dataGridViewCellStyle)
{
base.InitializeEditingControl(rowIndex, initialFormattedValue, dataGridViewCellStyle);
//создаем свой контрол.
GVEnumComboBox oControl = this.DataGridView.EditingControl as GVEnumComboBox;
// В виртуально режие нет своей строки- по этому и передается в параметре.
this._heightOfRowBeforeEditMode = this.DataGridView.Rows[rowIndex].Height;
// по тем же причинам.
this.DataGridView.Rows[rowIndex].Height = oControl.Height;
//запоминаем в переменной- члене индекс строки чтобы потом восстановить высоту строки.
miRow = rowIndex;
// собственно вот так в виртуальном режиме получаем значение ячейки.
// this.Value — выбросит уже обозначенное вами исключение.
ICheckEnum eValue = this.GetValue(rowIndex) as ICheckEnum;
oControl.InitData(eValue);
}
Удачи!!!
Re: DataGridView. Новый контрол в составе Framework 2.0. Час
Если запустить пример PassportEditControl.sln в VS2008, то при попытке сразу после запуска выбрать какое-то значение в "Серии" (н-р, 66) программа снимается.