Если я правильно понимаю, что вы хотите, чтобы ваши клетки, чтобы показать имя и телефон. Поскольку каждая ячейка может иметь одно значение, вы должны обернуть имя и телефон в один объект (например, контакт), а свойство связанного источника данных должно быть такого типа.
Вам действительно не нужны все три элемента управления для отображения в ячейке. если в режиме редактирования вам не нужны два ярлыка (один для имени и один для телефона). В режиме редактирования вам нужны комбобокс и ярлык (или текстовое поле, если вы хотите, чтобы телефон был доступен для редактирования), но это может быть сложно.
Затем вы хотите создать пользовательский DataGridViewCell, настраиваемый DataGridViewColumn и настраиваемый элемент управления.
Хотя вы можете добавить две метки в качестве дочерних элементов вашего пользовательского DataGridViewCell, гораздо проще просто переопределить Paint и нарисовать имя и телефон непосредственно на поверхности ячейки.
Пользовательское управление редактирования может быть любым элементом управления, реализующим интерфейс IDataGridViewEditingControl. Таким образом, это может быть составной элемент управления, содержащий поле со списком и метку (или текстовое поле). Композитный элемент управления должен редактировать объект Contact как единое целое.
Также пользовательский DataGridViewColumn отвечает за предоставление источника данных для выпадающей части элемента управления редактирования.
https://msdn.microsoft.com/en-us/library/7fb61s43(v=vs.110).aspx описывает, как создать пользовательскую ячейку и столбец.
https://msdn.microsoft.com/en-us/library/7tas5c80(v=vs.110).aspx описывает, как создать пользовательский элемент управления редактирования и как его создать из пользовательской ячейки.
Вы хотите иметь все эти элементы управления в одной ячейке? Они показывают/редактируют одно и то же значение? –
, например, на ярлыке должно отображаться имя, в поле со списком должно отображаться список имен для выбора, а текстовое поле будет содержать номер телефона. всякий раз, когда пользователь выбирает имя из combobox, метка и текстовое поле будут меняться в соответствии с именем, которое он выбрал (из базы данных, конечно). и да все в одной ячейке –
Непонятно, каково ваше требование. Но если вам нужно показать «Label», «TextBox» и «ComboBox» в «DataGridView», вам не нужно создавать собственный тип столбца. Вы можете использовать readonly 'DataGridViewTextBoxColumn' как метку, использовать' DataGridViewTextBoxColumn' как текстовое поле и 'DataGridViewComboBoxColumn' как combobox. –