1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    septembre 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2014
    Messages : 26
    Points : 20
    Points
    20

    Par défaut Casse tête Chinois sous VB Express 2010 !

    Bonjour à Tou(te)s,

    Depuis hier je me casse la tête sur un problème survenu subitement (si seulement je savais quelle modification AILLEURS que sur cet élément a pu provoquer cela !).

    Contexte: un développement VB Express 2010 relativement standard

    Besoin d'une Combobox avec liste ayant des CheckBox... donc recherche sur internet et mise en place d'un code CheckedComboBox gracieusement fourni par...
    https://code.msdn.microsoft.com/wind...ntrol-52dbdb37

    ... pas de problème, après l'intégration dans mon code: tout fonctionne sans problème et les tests sont validés.

    Divers autres modifications au programme en général (sur une Dialog qui n'a rien à voir)... sans relation avec la CheckedComboBox... toujours pas de problème.

    Hier... dans le but de tester autre chose, crash lors de l'accès à une ligne de la CheckedComboBox... erreur "Access Violation Exception" : "Tentative de lecture ou d'écriture de mémoire protégée. Cela indique souvent qu'une autre mémoire est endommagée." ce qui ne veut rien dire (enfin pour moi en tous cas)

    En titillant un peu on obtient en plus "Invalid Operation Exception" : "L'objet est actuellement utilisé ailleurs." "Si vous utilisez l'objet Graphics après la méthode GetHdc, appellez la méthode ReleaseHdc"

    La ligne visée est celle-ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CheckBoxRenderer.DrawCheckBox(e.Graphics, p, VisualStyles.CheckBoxState.UncheckedNormal)
    et elle est activée lors de l'accès à la CheckedComboBox, après l'affichage de la List, quand on positionne la souris sur l'un des éléments de la liste

    Alors oui, je fais appel à l'objet Graphics de la CheckedComboBox, mais pas à la méthode GetHdc (du moins pas à mon niveau) alors pour ce qui est de faire un Release...

    Sachant que la version précédente de mon programme (avant les dernières modifications dont je n'ai pas gardé la trace précise car tout allait bien...) ne présente pas cette erreur... comment puis-je la corriger ?

    Peut-on savoir qui bloque le Hdc (puisqu'il parait qu'il est utilisé "ailleurs"... comme dans XFiles) et comment ?

    En clair "Au secours !" - Merci d'avance à tous ceux (et toutes celles) qui ont une idée...


    NOUVEAU : une autre Dialog, créée ce jour après ce message, me pose le même problème sur une CheckedListBox (pourtant tout ce qu'il y a de plus standard dans les Forms à ajouter)
    Autant dire que je commence à enrager

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    septembre 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2014
    Messages : 26
    Points : 20
    Points
    20

    Par défaut bof....

    Hello,

    Toujours ce problème foldingue et personne ne semble savoir que faire ?

    Vraiment pas d'idée ?

    Pour ma part j'envisage de supprimer les Combocheckbox et CheckedListBox... pour les remplacer par des listbox simples et relever les items sélectionnés.

    Rien de bien glorieux... mais l'important est que cela marche, je n'ai pas trop le choix...

    Et comme il n'y a pas de "plus futé" que moi sur ce forum (semble-t-il en tous cas )

    Merci en tous cas de m'avoir lu

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    avril 2007
    Messages
    13 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : avril 2007
    Messages : 13 113
    Points : 23 887
    Points
    23 887

    Par défaut

    à première vue je ne vois de problématique dans le code source de ce control
    utilises tu du multithreading/backgroundworker/autre ?

    j’essaierai de jeter un oeil plus approfondi demain pour essayer de reproduire
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    septembre 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2014
    Messages : 26
    Points : 20
    Points
    20

    Par défaut

    Merci Pol63... je commençais à désespérer.

    Non, je n'utilise rien de "complexe"... ces listes et combos "checked" étaient les plus évolués de ce que j'ai utilisé.

    Mais je soupçonne Visual Studio 2010 Express d'avoir des bugs... ou pas assez dans certains cas.

    Autre exemple de ces "anomalies" à la cause introuvable....

    Je lance mon programme, sélectionne une ligne représentant un répertoire dans une "Listbox" des plus classiques et ouvre "Explorer.exe" sur ce répertoire.
    Le problème apparait je modifie le nom d'un fichier sous ce répertoire (ou même le nom de ce répertoire) et ferme "Explorer.exe"

    Si je le fais en Debug sous VS2010... aucun problème
    Si je le fais en "réel"... une fois sur deux ou trois, Explorer se ferme mais mon programme est figé et je ne peux l'arrêter qu'en killant son process sous le gestionnaire de tâche.

    Pourquoi ?
    Comment l'éviter ?

    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
                    Dim sAct As String = "C:\windows\Explorer.exe"
                    Dim cGui As Char = Chr(34)
                    Dim sBas = "D:\Test\"
    ' ---------- en fait rensignés dans une autre partie du programme ---------
     
    ' ---------- lancement proprement dit -----------------------------------
                    Dim proc As New Process()
                    Dim sFil As String = sBas + sLin(lNlg).Substring(0, 160).Trim()   ' sLin est un tableau des répertoires correspondant aux lignes de la Listbox - lNlg est l'index
                    Try
                        With proc.StartInfo
                            .WindowStyle = ProcessWindowStyle.Maximized
                            .FileName = sAct
                            .RedirectStandardOutput = False
                            .UseShellExecute = False
                            .CreateNoWindow = False
                            .Arguments = sPrm + cGui + sFil + cGui
                        End With
                        With proc
                            .Start()
                            .WaitForExit()
                            .Close()
                            .Dispose()
                        End With
                    Catch e As ApplicationException
                        MessageBox.Show("Erreur start process", e.ToString)
                    End Try
    Je ne sais pas et ne trouve rien qui permette d'expliquer ce problème
    Vive l'aléatoire !
    Merci pour ton aide

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    avril 2007
    Messages
    13 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : avril 2007
    Messages : 13 113
    Points : 23 887
    Points
    23 887

    Par défaut

    vs 2010 a bien quelques bugs, mais la plupart ne sont pas trop dérangeants ^^
    et vs 2017 community est aussi gratuit que vs 2010 express ...


    sinon j'ai repris le controle et dès que j'en pose un j'ai un bug
    quand on regarde les commentaires sur le site y a des gens qui semblent se plaindre de divers bugs
    je ne pense pas que c'est ms qui a écrit ca ... enfin le mieux est d'en trouver un autre
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Expert éminent

    Homme Profil pro
    Développeur .NET
    Inscrit en
    janvier 2012
    Messages
    4 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : janvier 2012
    Messages : 4 229
    Points : 8 823
    Points
    8 823
    Billets dans le blog
    20

    Par défaut

    Bonjour,

    C'est pourtant clair sur la page. Il faut VS2015. Ou bien, le contrôle a été créé avec VS2015. Et puis, ce n'est pas un code produit par Microsoft. Si c'était produit par Microsoft il y aurait MSFT à côté du nom de l'auteur. Que cela finisse par planter sur 2010 Express n'est probablement pas surprenant en soi. Généralement, une version plus ancienne passe bien sur une version plus récente (Des fois, la version récente modifie le code de la vieille version, en prévenant qu'il ne peut plus être utilisé dans l'ancienne version). Également, tu as téléchargé un zip qui date apparemment de 2013 et il y a une correction de code ajoutée sur la page. Donc vérifie que ton code est vraiment le code corrigé.

    Nom : Sans titre.jpg
Affichages : 28
Taille : 139,8 Ko
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    À force de vouloir considérer les utilisateurs comme des imbéciles patentés, on risque de se mettre dans le trouble.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

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

Discussions similaires

  1. [1.x] embedForm / mergeForm => casse tête chinois
    Par erictomcat dans le forum Symfony
    Réponses: 17
    Dernier message: 08/02/2011, 23h56
  2. BevelBitmapEffect sous visual express 2010
    Par TERRIBLE dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 06/06/2010, 02h29
  3. Casse tête chinois
    Par mortimer.pw dans le forum SQL
    Réponses: 5
    Dernier message: 26/09/2008, 19h59
  4. SMSLIB casse tête chinois
    Par yashiro dans le forum APIs
    Réponses: 2
    Dernier message: 02/11/2007, 11h45
  5. Casse tête chinois
    Par Jahjouh dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 15/03/2006, 09h04

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