gpt4 book ai didi

c# - 自定义图标会破坏 DataGridView?

转载 作者:太空宇宙 更新时间:2023-11-03 14:02:08 25 4
gpt4 key购买 nike

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

我用右箭头在 Visual Studio 2003 中打开它(我使用 VS2010 编写应用程序)。我重新给图标上色,看起来不错,但是当我去显示包含的控件时,出现以下错误:

DataGridView 中出现以下异常:

System.ArgumentException:参数无效。 在 System.Drawing.Image.FromStream(流流, bool 值 useEmbeddedColorManagement, bool 值 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、TypeConverter 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 block 中,这样我就可以看到异常,但它不会触发捕获。

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

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

最佳答案

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

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\VS2010ImageLibrary\1033

在这里您会找到一个 .zip 文件。解压缩。

然后你会发现带有大量 MS 图标和图像等的各种子目录。导航到

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\VS2010ImageLibrary\1033
\VS2010ImageLibrary\VS2010ImageLibrary\Objects\png_format\WinVista

在这里你会发现各种不同颜色的箭头。我的建议是使用这些,而不是对现有文件进行位图编辑。

希望对您有所帮助。

关于c# - 自定义图标会破坏 DataGridView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10452500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com