所以叫,我試圖跟隨this指導來填充在Visual Basic中XML數據的TreeView,但它引發錯誤:重載決策失敗,因爲沒有可訪問的「項目」可以不用收縮轉換
"Overload resolution failed because no accessible 'Item' can be called without a narrowing conversion: 'Public Overridable ReadOnly Default Property Item(key As String) As System.Windows.Forms.TreeNode': Argument matching parameter 'key' narrows from 'Long' to 'String'. 'Public Overridable Default Property Item(index As Integer) As System.Windows.Forms.TreeNode': Argument matching parameter 'index' narrows from 'Long' to 'Integer'."
經過一番搜索後,我被告知將Option Strict設置爲「Off」會解決錯誤,但它沒有做到這一點。有沒有人有解決這個錯誤?
這裏是有問題的代碼:
If inXmlNode.HasChildNodes() Then
nodeList = inXmlNode.ChildNodes
For i = 0 To nodeList.Count - 1
xNode = inXmlNode.ChildNodes(i)
inTreeNode.Nodes.Add(New TreeNode(xNode.Name))
tNode = inTreeNode.Nodes(i)
AddNode(xNode, tNode) //The code that throws the error.
Next
Else
' Here you need to pull the data from the XmlNode based on the
' type of node, whether attribute values are required, and so forth.
inTreeNode.Text = (inXmlNode.OuterXml).Trim
End If
如果您發佈代碼的相關部分並指出哪條語句出錯,這將有所幫助。看起來你正在使用'Long'來獲取一個特定的項目,而'Item'方法需要一個'Integer'或者一個'String'。很可能你應該使用'Integer'而不是'Long'。 – Blackwood
我的代碼與上面鏈接的代碼完全相同,但代碼錯誤的代碼尤其如此。 'AddNode(xNode,tNode)' – user2078595
您引用的語句是調用AddNode方法,該方法需要兩個TreeNode對象作爲其參數(您已提供)。當需要'Integer'或'String'時,很難理解編譯器如何認爲你提供了'Long'。你確定這是不是以前的聲明得到錯誤? – Blackwood