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 :

modification de la valeur saisie dans ListView_AfterLabelEdit


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    2 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 2 037
    Par défaut modification de la valeur saisie dans ListView_AfterLabelEdit
    Bonjour

    Aprés une saisie de l'utilisateur je fais une modification de la saisie que je tente d'utiliser comme nouvelle valeur pour le label de l'Item sélectionné dans un ListView

    Mon soucis est que je n'arrive pas à faire appliquer cette nouvelle valeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private void listViewParametres_AfterLabelEdit(object sender, LabelEditEventArgs e)
    {
    String Texte = e.Label ; 
    Texte.Substring(0, 10); // limite à 10 caractères
     
    listViewParametres.SelectedItems[0].Text = Texte ;
    }
    il ne se passe rien

    j'ai essayé de faire un e.CancelEdit = true avant ou après ma modif mais rien. la String texte contient bien ce que je veux mais le text de l'item sélectionné ne change pas.

    Qu'est ce que je n'ai pas compris dans l'affaire ?

    Merci

  2. #2
    Membre extrêmement actif Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    2 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 2 037
    Par défaut
    Re

    Ne m'en sortant pas avec cette histoire et n'ayant pas de certitude sur la possibilité de faire ce que je veux j'ai fait autrement : j'utilise un textbox pour faire ma saisi

    voici le code utilisé,compilation de plusieurs sources trouvées sur le net
    Il suffit d'ajouter une TextBox sur le form et de mettre ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
           ListViewItem.ListViewSubItem SelectedLSI;
            private void listViewParametres_MouseUp(object sender, MouseEventArgs e)
            {
     
                if (listViewParametres.SelectedItems.Count == 0) return;
     
                SelectedLSI = listViewParametres.SelectedItems[0].SubItems[2];
     
                if (SelectedLSI == null )  return;
     
                int CellWidth = SelectedLSI.Bounds.Width;
                int CellHeight = SelectedLSI.Bounds.Height;
                int CellLeft = 1 + listViewParametres.Left + SelectedLSI.Bounds.Left;
                int CellTop = listViewParametres.Top + SelectedLSI.Bounds.Top;
     
                TxtEdit.Location = new Point(CellLeft, CellTop);
                TxtEdit.Size = new Size(CellWidth, CellHeight);
                TxtEdit.Visible = true;
                TxtEdit.BringToFront();
                TxtEdit.Text = SelectedLSI.Text;
                TxtEdit.Select();
                TxtEdit.SelectAll();
            }
            /*****************************************************************************************************************************************/
            private void listViewParametres_MouseDown(object sender, MouseEventArgs e)
            {
                HideTextEditor();
            }
     
            private void TxtEdit_Leave(object sender, EventArgs e)
            {
                HideTextEditor();
            }
     
            private void TxtEdit_KeyUp(object sender, KeyEventArgs e)
            {
                if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Return)
                    HideTextEditor();
            }
     
            private void HideTextEditor()
            {
                TxtEdit.Visible = false;
                if (SelectedLSI != null)
                    SelectedLSI.Text = TxtEdit.Text;
                SelectedLSI = null;
                TxtEdit.Text = "";
            }
    Si quelqu'un me trouve la solution a mon premier problème ca m'intéresse quand même, histoire de comprendre

  3. #3
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Salut,

    dans ton event il faut lui mettre :
    pour que les changements de l'utilisateur ne soient pas pris en compte (et donc que tes changements côté code le soient).

    Par contre trois remarques :

    - la méthode Substring renvoie la sous-chaine, elle ne modifie pas la string appelante, il faut donc écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Text = Text.Substring(0, 10);
    - les paramètres de cette méthode doivent correspondre à des indices existants (dans ton cas : erreur si e.Label fait moins de 10 char),

    - si l'utilisateur se ravise et ne modifie pas le label alors e.Label sera null et l'appel à Substring engendrera une erreur.

  4. #4
    Membre extrêmement actif Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    2 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 2 037
    Par défaut
    Merci

    Pour les dernières remarques j'ai tous les cas qui m'ont pété à la figure déjà et sont tous corrigés, bravo de voir tout ça du premier coup d’œil... j'espère y arriver un jour ça prendra moins de temps !

    pour le premier CancelEdit, j'ai essayé comme je le dit dans mon premier post et ça ne change rien CancelEdit ou pas ça ne prend pas ma modif.

  5. #5
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Pour les petites remarques, si je les vois d'emblée c'est que moi aussi je m'y suis déjà cassé les dents par le passé, rien de glorieux
    Pour l'event voilà un code qui semble fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            private void lstView_AfterLabelEdit(object sender, LabelEditEventArgs e)
            {
                // si c'est pas null on peut manip (sinon c'est un user cancel)
                if (e.Label != null) {
                    // si c'est non vide on manip pour de vrai
                    if (e.Label != "") {
                        string s = e.Label.Length > 10 ? e.Label.Substring(0, 10) : e.Label;
                        lstView.SelectedItems[0].Text = s;
                    }
                    // quoi qu'il arrive on cancel pour pas avoir un label vide
                    e.CancelEdit = true;
                }
            }

  6. #6
    Membre extrêmement actif Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    2 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 2 037
    Par défaut
    Bon ben là il faut que je reprenne au calme par ce que ça j'ai testé et ça ne marchait pas !
    Je vais tomber ma sauvegarde d'hier pour retester (peut être un truc autour qui gène), là j'ai viré la partie concernée, remplacée par l’édition via un textebox

    merci

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/01/2007, 09h01
  2. Perte de valeurs saisies dans un formulaire
    Par mitje dans le forum Struts 1
    Réponses: 3
    Dernier message: 26/12/2006, 14h35
  3. Réponses: 5
    Dernier message: 20/10/2006, 15h26
  4. Valeurs saisies dans un formulaire
    Par vautour29 dans le forum Access
    Réponses: 7
    Dernier message: 11/07/2006, 14h39
  5. Réponses: 2
    Dernier message: 11/12/2004, 21h20

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