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

Dotnet Discussion :

Expressions Lambda avec variable à fixer O_o [Débutant]


Sujet :

Dotnet

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 36
    Par défaut Expressions Lambda avec variable à fixer O_o
    Bonjour à tous
    je ne sais même pas comment décrire mon problème mais bon

    J'aimerai créer des Expression Lambda dans des boucles et avoir le numéro de colonne + de ligne où se trouve cette expression Lambda

    voici à quoi le code devrait ressembler :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    for (int i = 1; i <= Config.nbColMax; i++)
                for (int j = 1; j <= Config.nbLigneMax; j++)
                {
                tb = new TextBox();
                tb.TextChanged += new System.Windows.Controls.TextChangedEventHandler(
                            ( sender,  e)
                            => { textBox_Change(i, j);  });
                b.Margin = ThicknessCalcul(i,j);
                this.gridEtiquette.Children.Add(b);
    }
    pour tous les TextChanged j’obtiens tb.TextChanged +=( sender, e)=> { textBox_Change(Config.nbColMax + 1, Config.nbLigneMax + 1);

    ce que j'aimerai obtenir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    tb.TextChanged +=( sender,  e)=> { textBox_Change(1, 1);  });
    tb.TextChanged +=( sender,  e)=> { textBox_Change(1, 2);  });
    tb.TextChanged +=( sender,  e)=> { textBox_Change(1, 3);  });
    ....
    d'avance merci de m'aiguiller

  2. #2
    Membre chevronné Avatar de WaterTwelve21
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2015
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2015
    Messages : 270
    Par défaut
    Bonjour ,

    avoir le numéro de colonne + de ligne où se trouve cette expression Lambda
    Je n'ai absolument pas compris cette phrase. Sinon je vois pas où est le problème , tu vas devoir te réexpliquer.

  3. #3
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    C'est un problème classique. Les expressions lambda capturent les variables, et non la valeur de la variable. Ainsi, quand tes expressions sont évaluées, i et j prennent leur dernière valeur.

    Pour corriger le tir, il faut copier les variables i et j dans des variables locales aux boucles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    for (int i = 1; i <= Config.nbColMax; i++)
                for (int j = 1; j <= Config.nbLigneMax; j++)
                {
                int copieI = i;
                int copieJ = j;
                tb = new TextBox();
                tb.TextChanged += new System.Windows.Controls.TextChangedEventHandler(
                            ( sender,  e)
                            => { textBox_Change(copieI, copieJ);  });
                b.Margin = ThicknessCalcul(i,j);
                this.gridEtiquette.Children.Add(b);
    }

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 36
    Par défaut
    Un grand Merci François DORIN

    fonction parfaitement


    ps : désolé WaterTwelve21
    je n'arrivais vraiment pas à saisir ce qu'il se passer,
    alors pour l'expliquer

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/11/2010, 15h24
  2. Réponses: 2
    Dernier message: 09/08/2010, 15h41
  3. Réponses: 0
    Dernier message: 22/12/2008, 16h25
  4. Réponses: 3
    Dernier message: 07/05/2008, 12h36
  5. Expressions régulières avec variable
    Par killprog dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/04/2006, 17h03

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