#winforms #datagridview #datagrid #datagridviewcolumn #datagridviewimagecolumn
#winforms #datagridview #datagrid #datagridviewcolumn #datagridviewimagecolumn
Вопрос:
У меня есть приложение C # Windows forms с таблицей данных. Один столбец таблицы — это столбец изображения, в который я помещаю растровое изображение. Он отлично работает на компьютере с Windows 10, на котором я его разработал, и при развертывании на компьютерах с Windows 7, но на всех других компьютерах с Windows 10 я получаю сообщение об ошибке. Ошибка «Система.Исключение FormatException: форматированное значение ячейки имеет неправильный тип.» Мне не удалось воссоздать ошибку на моем компьютере для разработки, поэтому я не уверен, как выяснить, что не так. Я подумал, что это может произойти из-за того, что при развертывании не было включено какое-либо предварительное условие (это приложение с одним щелчком мыши), но я не вижу, чтобы что-то отсутствовало. Я подумал, что, возможно, он не смог найти ссылки на изображение, поэтому я попытался нарисовать их вместо этого и все равно получил ту же ошибку. Я предполагаю, что это связано с моим столбцом bitmap, но я не знаю, почему это будет работать на моем компьютере и компьютерах с Windows 7, а не на других компьютерах с Windows 10. Есть идеи о том, что происходит и / или как это исправить?
Вот конструктор для моей сетки:
Вот настройки DefaultCellStyle. Я думал, что причиной может быть значение Null. Изначально у меня была System.Рисование.В нем растровое изображение. Я пытался использовать null, но все равно получаю ошибку.
Вот код для заполнения этого столбца.
Bitmap bmpCombineOnly = new Bitmap(1, 1);
Bitmap bmpYellow = new Bitmap(26, 26);
Graphics grYellow = Graphics.FromImage(bmpYellow);
grYellow.DrawEllipse(new Pen(Color.Yellow, 2), 0, 0, 25, 25);
grYellow.FillEllipse(new SolidBrush(Color.Yellow), 0, 0, 25, 25);
bmpCombineOnly = bmpYellow;
foreach (DataGridViewRow row in ItemsInLocationDataGridView.Rows)
{
row.Cells["Icon"].Value = bmpCombineOnly;
}
Комментарии:
1. Это поле NullValue в propertygrid подходит для текстовых столбцов, но не для столбца изображения. Да, отображается строка «Система. Рисование. Bitmap», но это результат
BitmapInstance.Tostring()
. Если вы введете некоторый текст в таблицу свойств, в ней будет сохранено это строковое значение, которое не подходит для ячейки, ожидающей значение bitmap. Найдите строку в файле конструктора формы, которая присваивает строке значение `Nullvalue и удалите ее, чтобы восстановить значение по умолчанию.2. Итак, у вас есть столбец с именем
Icon
. Он вообще компилируется с таким именем? Происходит утечка графических ресурсов: ни один из созданных вами объектов не удаляется. Я не понимаю, как это использовать:bmpCombineOnly = bmpYellow;
.