У меня есть DataGridView, который отображает список сообщений MMS. Чтобы различать отправленные и полученные, я помещаю стрелку вправо и стрелку влево в столбце. Наш клиент любил это, но хочет, чтобы стрелка вправо была зеленой для большей ясности, особенно в международных условиях.Настройка значка прерывает DataGridView?
Я взял стрелку вправо и открыл ее в Visual Studio 2003 (я использую VS2010 для написания приложения). Я перекрасили значок и выглядел великолепно, но когда я пошел, чтобы отобразить содержащий Control, я получаю следующее сообщение об ошибке:
следующее исключение произошло в DataGridView:
System.ArgumentException: Параметр недействительно. в System.Drawing.Image.FromStream (поток Stream, Boolean, Boolean useEmbeddedColorManagement validateImageData) в System.Drawing.ImageConverter.convertFrom (ITypeDescriptorContext контексте, CultureInfo культуры, значение объекта) в System.Windows. Forms.Formatter.FormatObjectInternal (значение объекта, тип TargetType, TypeConverter sourceConverter, TypeConverter targetConverter, Строка FormatString, IFormatProvider formatInfo, объект formattedNullValue, объект dataSourceNullValue) в System.Windows.Forms.DataGridViewCell.GetFormattedValue (значение объекта, Int32 RowIndex, DataGridViewCellStyle & cellStyle, Тип Конвертор valueTypeConverter, TypeConverter formattedValueTypeConverter, DataGridViewDataErrorContexts контекст)
Чтобы заменить диалог это по умолчанию, пожалуйста, обработайте событие DataError.
Когда я создаю DataTable быть заселен с данными, я использую это на столбец, который будет иметь значок
dt.Columns.Add(sDirection);
dt.Columns[sDirection].DataType = typeof(Byte[]);
Когда я добавить данные в строки, у меня есть метод, чтобы преобразовать Икона.
internal static Byte[] ConvertIconToByteArray(Icon pIcon) {
MemoryStream ms = new MemoryStream();
pIcon.Save(ms);
return (ms.GetBuffer());
}
И я добавить DataTable к DataGridView с
grdMMSList.DataSource = dt.DefaultView;
(метод вызовов, удаленных из приведенного выше кода для ясности)
Я следовал через в отладчик, и установка DefaultView как в DataSource возникает ошибка. Я попытался разместить его в блоке try/catch, чтобы я мог видеть Exception, но он не вызывает catch.
Просто некоторые другие биты информации: - Икона хранится как ресурс и вызывается Properties.Resources.RightArrow - После изменения цвета, я просто сохранить файл в VS2003, ничего с Save As , Файл по-прежнему отображается как значок везде. - В VS2010 в файле ресурсов есть новая цветовая схема и правильно отображается.
Благодарим вас за любую помощь, которую вы можете предоставить.
Спасибо! Я не знал, что они там. Мой босс не упомянул об этом, когда он сказал мне, чтобы я искал в Интернете группы Icons & Gifs. Мне все равно было интересно узнать, почему отредактированное изображение взорвалось, когда оно было помещено в DataGridView. – krillgar
В каком формате было изображение, которое вы пытались отредактировать? Для хорошей библиотеки значков/логотипов, [см. Здесь] (http://findicons.com/). – MoonKnight
Извините, мне потребовалось столько времени, чтобы ответить. Я точно не помню, откуда у меня есть набор иконок. Я использую несколько из набора, и все они являются .ico-форматом. – krillgar