2014-02-15 87 views
-1

我正在使用Visual Basic 2010,並且我一直在收到此錯誤消息(重載解析失敗,因爲沒有可訪問的'New'接受這個參數數量)當我嘗試聲明myProducts。我不知道我做錯了什麼。請幫忙。重載解析失敗vb.net

Dim Counter As Integer = 0 

Private arrayProducts(9) As Products.Products.Products 

Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click 
    If Counter < 10 Then 
     Dim myProduct As New Products.Products.Products(arrayProducts(Counter + 1), 
                 CDec(txtItemNumber.Text), txtName.Text, 
                 txtManufacturer.Text, CDbl(txtWholeSalePrice.Text), CInt(txtQuantity.Text)) 
     arrayProducts(Counter) = myProduct 
     MessageBox.Show("Product is added to inventory.") 
     Counter += 1 
    Else 
     MessageBox.Show("Sorry, inventory is full.") 
    End If 
End Sub 
+2

不,我絕對* *參見代碼中的新建。我沒有看到Products類,但是100%確定它沒有帶有6個參數的「Sub New」。編譯器這樣說。 –

+1

請向您展示Products.Products.Products類。請**不要**進一步擴展成Products.Products.Products.Products等。 – Neolisk

+0

我在我的Product類中有Sub New()。 – user3314640

回答

0

這段代碼:

Dim myProduct As New Products.Products.Products(arrayProducts(Counter + 1), 
                CDec(txtItemNumber.Text), 
                txtName.Text, 
                txtManufacturer.Text, 
                CDbl(txtWholeSalePrice.Text), 
                CInt(txtQuantity.Text)) 

意味着你必須有一個構造函數(次新),這需要6個ARGS,大概是這樣的:

Sub New(Index As Integer, ProdCode As String, ProdName As String, 
     ManufacturerName As String, Price as Double, Quantity As Integer) 

的錯誤是說它找不到該構造函數(即許多參數,但類型也必須按照{Int32, String, String, String, Double, Integer}的順序)。有了這麼多參數,你可能有太多 - 或很難想象 - 太少。 IntelliSence應該彈出實際的;您正在鍵入的參數列表。

您可能會發現一個List是容易的工作比一個老同學的數組:

Friend ProdList As New List(Of Products.Products.Products) 
.... 
Dim p As New Products.Products.Products(...<long arg list>) 
ProdList.Add(p) 
... 
TextBox.Text = ProdList(DesiredProd).ProductName 
+0

謝謝你,我會試試看。 – user3314640