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

VB.NET Discussion :

probleme pour bloquer redimensionnement listview


Sujet :

VB.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Points : 64
    Points
    64
    Par défaut probleme pour bloquer redimensionnement listview
    bonsoir,

    tout ou presque est dans le titre. j'ai un listview avec plusieurs colonne dont je voudrais fixer la largeur...bloquer leur redimensionnement.

    J'ai tester un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub ListView1_ColumnWidthChanging(ByVal sender As Object, ByVal e As System.Windows.Forms.ColumnWidthChangingEventArgs) Handles ListView1.ColumnWidthChanging
     
     ListView1.Columns(1).Width = 105
     
     End Sub
    mais j'obtient une exception non gérée du type 'System.StackOverflowException' s'est produite dans mscorlib.dll

    Comment puis je faire?

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Le fait de changer la propriété Width provoque à nouveau l'évènement ColumnWidthChanging, d'où le stack overflow
    Il vaudrait mieux faire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub ListView1_ColumnWidthChanging(ByVal sender As Object, ByVal e As System.Windows.Forms.ColumnWidthChangingEventArgs) Handles ListView1.ColumnWidthChanging
     
      e.NewWidth = 105
     
    End Sub

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Points : 64
    Points
    64
    Par défaut
    bonjour tomlev,

    merci pour ton aide, mais j'ai tester ta solution est cela ne change rien.... je peux toujours modifier la taille des colonnes de mon treeview. Une autre idée?

    sinon, j'ai un autre soucis avec mon treeview. J'arrive a sélectionner une ligne de ce treeview par le code (la ligne devient sur lignée).
    Par contre j'aimerais simuler le clic de souris sur cette ligne pour pouvoir afficher le contenu des colonnes dans des label... et la je bloque complètement.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par waspy59 Voir le message
    merci pour ton aide, mais j'ai tester ta solution est cela ne change rien.... je peux toujours modifier la taille des colonnes de mon treeview. Une autre idée?
    Bizarre... et comme ça, ça ne marche pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub ListView1_ColumnWidthChanging(ByVal sender As Object, ByVal e As System.Windows.Forms.ColumnWidthChangingEventArgs) Handles ListView1.ColumnWidthChanging
      If e.NewWidth <> 105
        e.Cancel = True
      End If
     
    End Sub

    Citation Envoyé par waspy59 Voir le message
    sinon, j'ai un autre soucis avec mon treeview. J'arrive a sélectionner une ligne de ce treeview par le code (la ligne devient sur lignée).
    Par contre j'aimerais simuler le clic de souris sur cette ligne pour pouvoir afficher le contenu des colonnes dans des label... et la je bloque complètement.
    Je comprends pas trop ce que tu veux dire... tu peux expliquer ça plus précisément ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Points : 64
    Points
    64
    Par défaut
    Pour bloquer le redim des colonnes, j'ai testé ta proposition.... elle bloque bien le redim quand je clic avec la souris mais dès que je relache le redim s'effectue....
    J'ai testé aussi ça, avec succès:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub ListView1_ColumnWidthChanging(ByVal sender As Object, ByVal e As System.Windows.Forms.ColumnWidthChangingEventArgs) Handles ListView1.ColumnWidthChanging
            If e.NewWidth <> 105 Then
                e.Cancel = True
                e.NewWidth = 105
            End If
        End Sub
    Pour ma seconde question, je vais essayer d'être plus precis:

    dans mon tit logiciel, je liste le contenu d'une DB dans le listview (1ligne correspondant a un enregistrement).

    cependant dans mon listview je ne fais apparaitre que certains champs de la DB.
    Quand je clic sur la ligne du treview qui m'intéresse, je rapatrie les données complémentaires dans des labels (cela fonctionne très bien manuellement).

    Ce que je veux faire par le code c'est:
    1) recherche de l'enregistrement voulu et sélection de la ligne correspondante dans le listview (ça j'ai réussi).
    2) simuler le clic sur cette ligne du treview pour remplir les labels (ça j'y arrive pas).

    ai-je été plus clair?

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par waspy59 Voir le message
    Pour bloquer le redim des colonnes, j'ai testé ta proposition.... elle bloque bien le redim quand je clic avec la souris mais dès que je relache le redim s'effectue....
    J'ai testé aussi ça, avec succès:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub ListView1_ColumnWidthChanging(ByVal sender As Object, ByVal e As System.Windows.Forms.ColumnWidthChangingEventArgs) Handles ListView1.ColumnWidthChanging
            If e.NewWidth <> 105 Then
                e.Cancel = True
                e.NewWidth = 105
            End If
        End Sub
    Essaie d'ajouter aussi un handler sur ColumnWidthChanged :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub ListView1_ColumnWidthChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.ColumnWidthChangedEventArgs) Handles ListView1.ColumnWidthChanging
            If ListView1.Columns(e.ColumnIndex).Width <> 105
                ListView1.Columns(e.ColumnIndex).Width = 105
            End If
        End Sub
    Citation Envoyé par waspy59 Voir le message
    Pour ma seconde question, je vais essayer d'être plus precis:

    dans mon tit logiciel, je liste le contenu d'une DB dans le listview (1ligne correspondant a un enregistrement).

    cependant dans mon listview je ne fais apparaitre que certains champs de la DB.
    Quand je clic sur la ligne du treview qui m'intéresse, je rapatrie les données complémentaires dans des labels (cela fonctionne très bien manuellement).

    Ce que je veux faire par le code c'est:
    1) recherche de l'enregistrement voulu et sélection de la ligne correspondante dans le listview (ça j'ai réussi).
    2) simuler le clic sur cette ligne du treview pour remplir les labels (ça j'y arrive pas).

    ai-je été plus clair?
    En général, quand on cherche à simuler un clic, c'est qu'on prend le problème à l'envers
    Je suppose que le code qui remplit les labels est dans le handler de l'évènement NodeMouseClick du TreeView (ou autre évènement similaire) ? Dans ce cas, il suffit que tu mettes ce code dans une nouvelle procédure, que tu appelles :
    - à partir du handler de NodeMouseClick
    - quand tu as besoin de remplir les labels autrement que sur un clic

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Points : 64
    Points
    64
    Par défaut
    un grand merci pour ton aide, tout est ok

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/09/2012, 00h53
  2. [LG]Divers problémes pour un programme.
    Par Horus TCT dans le forum Langage
    Réponses: 14
    Dernier message: 25/05/2003, 00h04
  3. Probleme pour les insertion au format etranger
    Par Sandrine75 dans le forum XMLRAD
    Réponses: 5
    Dernier message: 19/03/2003, 11h55
  4. [Kylix] probleme pour lancer le shell
    Par miky dans le forum EDI
    Réponses: 5
    Dernier message: 13/08/2002, 10h39
  5. Réponses: 2
    Dernier message: 30/05/2002, 09h54

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