Я использую код в this article для создания DataGridViewProgressCell, который принимает целое число от 0 до 100 и отображает значение в процентах вместе с изображением, которое выглядит как индикатор выполнения в ячейке DataGridView.Изменение типа ячейки в привязке данных DataGridView к пользовательскому типу DataGridViewCell
Это прекрасно работает, когда я не использую DataGridView с привязкой к данным, но когда я привязываюсь к списку объектов с целочисленным свойством, я не могу понять, как сообщить DataGridView, что конкретный столбец следует рассматривать как новый тип DataGridViewProgressCell.
В приведенном ниже коде Percent является целочисленным свойством объекта Car. Ошибка я получаю время запуска ошибки:
Value provided for CellTemplate must be of type System.Windows.Forms.DataGridViewTextBoxCell or derive from it.
Вот код:
namespace GridViewSample
{
public partial class Form1 : Form
{
private SortableBindingList<Car> carlist = new SortableBindingList<Car>();
public Form1()
{
InitializeComponent();
// databind the datagridview to the car list
dataGridView1.DataSource = carlist;
DataGridViewCell cell = new DataGridViewProgressCell();
// run time error occurs on this line
dataGridView1.Columns["Percent"].CellTemplate = new DataGridViewProgressCell();
}
}
}
Итак, установите AutoGenerateColumns в false, вручную определите столбцы, а затем установите DataSource в список привязки, правильно? В этой последовательности? – Dave
Единственный порядок, который имеет значение, заключается в том, что AutoGenerateColumns должен быть ложным до того, как вы установите свойство DataSource, хотя кажется логичным добавлять столбцы перед добавлением данных. – Tergiver