2015-05-17 44 views
0

所以叫,我試圖跟隨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 
+0

如果您發佈代碼的相關部分並指出哪條語句出錯,這將有所幫助。看起來你正在使用'Long'來獲取一個特定的項目,而'Item'方法需要一個'Integer'或者一個'String'。很可能你應該使用'Integer'而不是'Long'。 – Blackwood

+0

我的代碼與上面鏈接的代碼完全相同,但代碼錯誤的代碼尤其如此。 'AddNode(xNode,tNode)' – user2078595

+0

您引用的語句是調用AddNode方法,該方法需要兩個TreeNode對象作爲其參數(您已提供)。當需要'Integer'或'String'時,很難理解編譯器如何認爲你提供了'Long'。你確定這是不是以前的聲明得到錯誤? – Blackwood

回答

0

定義我作爲一個整數,而不是長期。它應該與過載相匹配。

Private Sub AddNode(ByRef inXmlNode As XmlNode, ByRef inTreeNode As TreeNode) 
     Dim xNode As XmlNode 
     Dim tNode As TreeNode 
     Dim nodeList As XmlNodeList 
     Dim i As Integer 


    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 
相關問題