Как вы уже узнали, DataGridView
очень мощный и выполняет большую часть работы в автоматическом режиме.К сожалению, вы сталкиваетесь с проблемами, если эти значения по умолчанию не соответствуют вашим предпочтениям (например, использование ComboBox для свойства текста).
Чтобы получить DataGridViewComboBoxColumn
в нужном месте, вы можете сделать это программно в своем коде или(если возможно) сделать это с дизайнером (в Visual Studio не знаю, поддерживает ли SharpDevelop это).
Использование (Visual Studio) Designer
Для этого сценария необходимо, чтобыСтруктура данных известна во время разработки, предоставляя класс, содержащий всю (или более) информацию в виде простых свойств (например, класс персонажа с именем свойства, возрастом и т. д.).Если это доступно, вы можете добавить BindingSource
к своему элементу управления и щелкнуть в окне свойств на кнопке рядом со свойством DataSource .Выберите Добавить источник данных проекта , выберите Объект и выберите нужный объект.
Теперь у вас есть источник привязки, настроенный для определенного типа источника данных.Затем выберите DataGridView и измените свойство DataSource на недавно созданный источник привязки.
После этого DataGridView автоматически заполнится столбцом для каждого свойства.Теперь вы можете легко перейти к свойству Columns и изменить поведение и тип каждого столбца по своему усмотрению.
Чтобы связать ваши конкретные данные с DataGridView, просто примените вашу таблицу к источнику привязки.
Делая то же самое во время выполнения
Если у вас есть Visual Studio и вы выполнили описанные выше шаги, вы можете впоследствии легко заглянуть в файл Designer.cs и выяснить, как Visual Studio все это делал.,Там нет ничего, что вы не можете сделать также вручную.Так что если вам нужно просто сделать это.
Просто создайте DataGridViewComboBoxColumn
, установите DataPropertyName
и HeaderText
, и вы получите хорошую отправную точку.Получите IndexOf()
столбец, который вы хотите заменить, удалите его и Insert()
ваш только что созданный столбец в нужной позиции.
Прежде чем Grid сможет отображать некоторые данные (в ComboBoxColumn), вам нужно предоставитьсписок с возможными значениями.Для этого в comboBoxColumn имеется свойство DataSource , в котором вы можете указать нужные значения.В простейшем сценарии вы просто предоставляете ICollection<string>
, но вы также можете дать что-то более сложное, например List<KeyValuePair<Enum, string>>
.Если это так, вы должны также установить свойства ValueMember
и DisplayMember
, чтобы сообщить ComboBox, какие свойства объектов следует использовать для заполнения списка.
Может быть, с учетом этой информации вам следует взглянутьв статье MSDN о DataGridViewComboBoxColumn и изучите пример.Это должно дать вам несколько дополнительных советов о том, как правильно его настроить.