IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[C#] Comment utiliser Find sur une List de structure ?


Sujet :

C#

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 91
    Points : 78
    Points
    78
    Par défaut [C#] Comment utiliser Find sur une List de structure ?
    Bonjour à tous,
    j'ai besoin d'utiliser la méthode Find sur une List de structure...
    Le problème est la syntaxe...
    Je veux accéder à un élément de ma structure et je n'y arrive pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public struct ControlDetail
            {
                public String controlName;
                public Boolean controlRead;
                public Boolean controlNew;
                public Boolean controlModify;
                public Boolean controlDelete;
            }
    Voici ma structure déclarée dans la classe User. Je créé dans cette même classe une List de ControlDetail. Je créé aussi une propriété Control qui me renvoit cette liste.

    Dans une autre classe, je souhaiterais utiliser la méthode Find pour trouver une correspondance entre le nom d'un contrôle ajouté (via l'événement ControlAdded de ma form) et controlName qui est dans ma List de ControlDetail.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    user.Control.Find(User.ControlDetail.controlName.Equals(e.Control.Name));
    Je pensais m'en sortir de cette manière mais non. Je n'arrive vraiment pas à accéder aux éléments de ma structure...

    Merci de votre aide.

  2. #2
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Essayes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    //...
       this.searchName = e.Control.Name;
       ControlDetail cd = user.Control.Find(HasSameName);
    //...
     
    private string searchName ;
    private bool HasSameName(ControlDetail cDetail)
    {
       if (cDetail.controlName == this.searchName)
       {return true;}
       else
       {return false;}
    }
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Points : 621
    Points
    621
    Par défaut
    C'est sûrement plus simple d'utiliser un Dictionnary avec le nom du contrôle comme clé.

    Une autre solution, utiliser Control.Tag pour lier ces données directement à l'objet Control.
    On ne peut pas faire boire un âne qui n'a pas soif.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 91
    Points : 78
    Points
    78
    Par défaut
    neguib je comprends pas trop pourquoi tu fais une méthode avec un argument... Alors qie dans l'appel tu n'en mets pas.

    C'est bizarre j'ai pas la propriété Tag...
    Pourtant j'ai été voir la doc, il faut juste l'assembly System.Windows.Form
    Comme je suis dans une form, j'ai cette assembly mais je ne peux pas accéder à la propriété Tag. Même sur un Object...

    J'ai rien dit, j'avais pas compris le but de la propriété Tag...
    Je pensais qu'on pouvait lier controlName à la l'élément de la List...
    Or que c'est pour un control...

    Euh... je sais pas si cette solution va me convenir NicolasG... Car je veux trouver par rapport à la structure pas l'inverse.

  5. #5
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par L`artiste
    neguib je comprends pas trop pourquoi tu fais une méthode avec un argument... Alors qie dans l'appel tu n'en mets pas.
    Tu comprends pas mais as-tu au moins essayé
    Il te faut revoir la doc MSDN2 sur les générics et notamment la possibilité de passer en argument un pointeur (AddressOf en VB.Net) pour la méthode Find
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 91
    Points : 78
    Points
    78
    Par défaut
    Milles excuses...
    Entre temps j'ai trouvé la doc et leur exemple de dinosaures...

    Y avait un tit problème car j'avais pris ton code tel quel, et il ralait avec "method group" tout ça parce que j'avais pas mis le User.ControlDetail...
    J'avais oublié ça et le message ne me faisait pas trop penser à ça.
    Ca y est ça marche God Damn It !!!!!!!
    Merci neguib

    Reste plus qu'à trouver pour le drag & drop multiple...

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Points : 621
    Points
    621
    Par défaut
    Citation Envoyé par L`artiste
    C'est bizarre j'ai pas la propriété Tag...
    Pourtant j'ai été voir la doc, il faut juste l'assembly System.Windows.Form
    Comme je suis dans une form, j'ai cette assembly mais je ne peux pas accéder à la propriété Tag. Même sur un Object...

    J'ai rien dit, j'avais pas compris le but de la propriété Tag...
    J'avais bien précisé Control.Tag, j'aurais pu mettre System.Windows.Forms.Control.Tag pour être plus clair ...
    Citation Envoyé par L`artiste
    Je pensais qu'on pouvait lier controlName à la l'élément de la List...
    J'ai aussi proposé une collection de type Dictionnary qui est précisément faite pour ça.
    On ne peut pas faire boire un âne qui n'a pas soif.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 91
    Points : 78
    Points
    78
    Par défaut
    Merci quand même NicolasG
    Mais si t'as une solution pour le drag & drop multiple je suis preneur !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment utiliser usemap sur une image png transparente
    Par master_kb2 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/01/2008, 14h00
  2. Réponses: 1
    Dernier message: 27/03/2007, 14h07
  3. [VBA-E] Comment créer un control sur une liste de choix ?
    Par Soulsurfer dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/02/2007, 12h42
  4. Réponses: 3
    Dernier message: 06/09/2006, 18h59
  5. [Procédure stockée] Comment travailler sur une liste de ...
    Par WwiloO dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 13/02/2006, 11h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo