IndexOf Access of shared member, constant member [Résolu]

Signaler
Messages postés
259
Date d'inscription
dimanche 14 juillet 2002
Statut
Membre
Dernière intervention
17 août 2012
-
Messages postés
259
Date d'inscription
dimanche 14 juillet 2002
Statut
Membre
Dernière intervention
17 août 2012
-
I got this warning
Warning    2    Access of shared member, constant member, enum member or nested type through an instance; qualifying expression will not be evaluated.
The warning is on IndexOf
How can I solve this, I never accept any warning on my programmation....

    Private Sub ChargerTableau()
        Dim myparametre() As String = parametre(1).Trim.Split(" ;".ToCharArray)

        Dim range As Excel.Range = worksheet.Range(myparametre(0) & CInt(myparametre(1)) + 1, myparametre(2) & CInt(myparametre(1)) + 1)
        Dim theArray As String() = modExcel.ConvertToStringArray(CType(range.Cells.Value, System.Array))

        For Each title As String In theArray

            With tableLayoutPanel1

                .Height = tableLayoutPanel1.Height + 28
                .Controls.Add(GetLabel(title))
                Dim g As Integer
                .Controls.Add(GetControl(worksheet.Range(modExcel.GetLetterFromNumber(theArray.IndexOf(theArray, title) + 1) & CInt(myparametre(1)) + 1).Validation))
                .RowCount = tableLayoutPanel1.RowCount + 1

            End With

        Next title

    End Sub
A voir également:

7 réponses

Messages postés
256
Date d'inscription
mardi 25 novembre 2003
Statut
Membre
Dernière intervention
6 novembre 2009
1
Utilise une ArrayList, les fonctions de recherche sont plus évoluées
sinon tu as raison , mais cette fonction est une fonction shared c'est à dire
qu'elle appartient à la classe, il faut écrire :
System.Array

.IndexOf(theArray, title)

Jcbé[^]
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
Et en français ça donne quoi ??????????

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
256
Date d'inscription
mardi 25 novembre 2003
Statut
Membre
Dernière intervention
6 novembre 2009
1
Erreur classique, il faut utiliser la methode avec la classe et non avec une instance de la classe.


Ca le fait par exemple avec System.Drawing.Color et d'autres....


Par contre, tu ne nous dit pas sur quelle ligne l'erreur s'est produite. Ca serait cool si tu veux qu'on t'aide.

Jcbé[^]
Messages postés
259
Date d'inscription
dimanche 14 juillet 2002
Statut
Membre
Dernière intervention
17 août 2012

En fait je l'avais dit, ces sur la ligne
.Controls.Add(GetControl(worksheet.Range(modExcel.GetLetterFromNumber(theArray.IndexOf(theArray, title) + 1)
Ces IndexOf qui produit l'erreur
Messages postés
256
Date d'inscription
mardi 25 novembre 2003
Statut
Membre
Dernière intervention
6 novembre 2009
1
Ca ne m'étonnes pas avec une telle accumulation d'instructions dans une seule ligne, dans ce genre de cas cela n'est pas "se déshonorer" que de créer des variables intermediaires qui permettent d'y voir plus clair et de permettre ultérieurement de faire des contrôles.


 


Pour ton problème, theArray.IndexOf(theArray, title) ne peut pas fonctionner, si tu cherche la première occurence de la chaine contenue par title il faut ecrire :
theArray.IndexOf(title) tout simplement !

Jcbé[^]
Messages postés
259
Date d'inscription
dimanche 14 juillet 2002
Statut
Membre
Dernière intervention
17 août 2012

NAh tu te trompe la, indexof n'accepte pas ce nombre d'argument... ma méthode fonctionne mais ces que sa me donne un warning. Ta methode par contre n'Est psa corecte elle donne une erreur overload resolution failed. lol
Messages postés
259
Date d'inscription
dimanche 14 juillet 2002
Statut
Membre
Dernière intervention
17 août 2012

MErci, sa réglé mon warning =:0)