C# 自定义图标会破坏DataGridView吗?

C# 自定义图标会破坏DataGridView吗?,c#,datagridview,icons,C#,Datagridview,Icons,我有一个DataGridView,显示彩信列表。为了区分发送和接收,我在一列中放置了右箭头和左箭头。我们的客户很喜欢它,但希望右箭头为绿色,以便更加清晰,尤其是在国际环境中 我使用右箭头并在VisualStudio2003中打开它(我使用VS2010编写应用程序)。我回忆了图标,它看起来很棒,但是当我去显示包含控件时,我得到以下错误: DataGridView中发生以下异常: System.ArgumentException:参数无效。 在System.Drawing.Image.FromStr

我有一个DataGridView,显示彩信列表。为了区分发送和接收,我在一列中放置了右箭头和左箭头。我们的客户很喜欢它,但希望右箭头为绿色,以便更加清晰,尤其是在国际环境中

我使用右箭头并在VisualStudio2003中打开它(我使用VS2010编写应用程序)。我回忆了图标,它看起来很棒,但是当我去显示包含控件时,我得到以下错误:

DataGridView中发生以下异常:

System.ArgumentException:参数无效。 在System.Drawing.Image.FromStream(Stream Stream,Boolean useEmbeddedColorManagement,Boolean validateImageData) 位于System.Drawing.ImageConverter.convertFrom(ITypeDescriptorContext上下文、CultureInfo区域性、对象值) 位于System.Windows.Forms.Formatter.FormatObjectInternal(对象值、类型targetType、类型Converter sourceConverter、类型Converter targetConverter、字符串formatString、FormatProvider formatInfo、对象formattedNullValue、对象数据源NullValue) 位于System.Windows.Forms.DataGridViewCell.GetFormattedValue(对象值、Int32行索引、DataGridViewCellStyle和cellStyle、类型转换器值类型转换器、类型转换器formattedValueTypeConverter、DataGridViewDataErrorContext)

要替换此默认对话框,请处理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设置为引发错误的数据源。我试着把它放在一个try/catch块中,这样我就可以看到异常,但它不会触发catch

只是一些其他信息: -图标存储为资源,并由Properties.Resources.RightArrow调用 -更改颜色后,我只将文件保存在VS2003中,不使用另存为。该文件仍然以图标的形式到处显示。 -回到VS2010,资源文件确实有新的颜色方案,并在那里正确渲染


提前感谢您提供的任何帮助。

我不会以这种方式编辑图像。如果您想要一组有效的箭头,并且这些箭头都支持添加到
DataGridView
,请将其添加到目录中

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\VS2010ImageLibrary\1033
在这里您将找到一个.zip文件。解开它

然后,您将发现varios子目录中有大量MS图标和图像等。导航到

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\VS2010ImageLibrary\1033
    \VS2010ImageLibrary\VS2010ImageLibrary\Objects\png_format\WinVista
在这里你会发现各种不同颜色的箭头。我的建议是使用这些,而不是对现有文件进行位图编辑


我希望这有帮助。

谢谢!我没有意识到那些在那里。当我的老板告诉我去网上搜索图标和礼物组时,他没有提到这些。我仍然想知道为什么编辑后的图像在放入DataGridView时会爆炸。您试图编辑的图像是什么格式的?对于一个好的图标/徽标库,。抱歉,我花了这么长时间才回复。我不记得图标是从哪里来的。我正在使用一组中的几个,它们都是.ico格式。如果你正在做这种类型的分配,请查看。谢谢。我会留意的。我不知道我需要多少,但知道是成功的一半!