我正在使用imagecolumn编写基于DataGridView的Windows-Forms-Application。它基本上只显示来自数据库的信息。以下代码用于显示图像(用于工作):
for each row as datarow in dt.rows
'Some code ....
With gridRow
'Picture
If row.Item("img_ID").ToString = "0" Then
.Cells(0).Value = Nothing
ElseIf row.Item("img_ID").ToString = "1" Then
.Cells(0).Value = My.Resources.icon11
ElseIf row.Item("img_ID").ToString = "2" Then
.Cells(0).Value = My.Resources.icon2__2_
Else
.Cells(0).Value = Nothing
End If
' Some Other Code
End With
Next
此代码导致Resources.Designer.vb
Google-Translator-English中的附加信息部分:
(Ein Aufrufziel hat einen Ausnahmefehler verursacht。)
呼叫目的地导致异常错误。
我该如何解决?
使用以下内容:
Friend ReadOnly Property icon11() As System.Drawing.Icon
Get
Try
Dim obj As Object = ResourceManager.GetObject("icon11", resourceCulture)
Return CType(obj, System.Drawing.Icon)
Catch ex As Exception
My.Computer.Clipboard.SetText(ex.Message & vbNewLine & "- - - - - " & vbNewLine & ex.InnerException.Message)
End Try
End Get
End Property
得到以下内容(再次由Google翻译):
(Ein Aufrufziel hat einen Ausnahmefehler verursacht。)
呼叫目的地导致异常错误。
(Der Vorgang wurde erfolgreich beendet。)
操作成功
很好的尝试InnerException先生..
答案:Hans Passant
您必须显示内部异常的堆栈跟踪。请记住,您的代码存在缺陷,每次使用My.Resources.iconxxx属性时都会出现新图标。这需要处理。这工作大约一万次,然后操作系统阻止你创建更多的图标和怪异的错误消息开始发生。仅使用此类属性一次,可以多次分配。并且给用户一个休息时间,没有人喜欢抓住数千行。看看Google显示百万次查询点击的方式。
确切的问题通过以下方式解决:
private ico() As System.Drawing.Icon = New System.Drawing.Icon() {My.Resources.icon11, My.Resources.icon2__2_}
'Some Code
If row.Item("img_ID").ToString = "0" Then
.Cells(0).Value = Nothing
ElseIf row.Item("img_ID").ToString = "1" Then
.Cells(0).Value = ico(0)
ElseIf row.Item("img_ID").ToString = "2" Then
.Cells(0).Value = ico(1)
Else
.Cells(0).Value = Nothing
End If