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 :

Controle ActiveX fait planter Visual Studio 2008


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Points : 52
    Points
    52
    Par défaut Controle ActiveX fait planter Visual Studio 2008
    Bonjour,

    j'ai un projet que je suis en train de réaliser, et pour pouvoir réutiliser certains objets, j'ai décidé de faire un Windows Form Control personnalisé.

    Le problème, c'est lorsque j'essaie d'ajouter ce contrôle à un formulaire, c'est tout Visual Studio qui plante.

    J'ai joint les fichier .cs si vous voulez vérifier... (ça aurait fait long de code à mettre sur ce message...)

    Merci


    FadeOut
    Fichiers attachés Fichiers attachés

  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 753
    Points
    39 753
    Par défaut
    ça n'a rien à voir avec ActiveX (le seul contrôle dans ton UserControl est un ListView, qui est un contrôle .NET)

    A mon avis le problème c'est ta propriété width :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            public int width
            {
                set
                {
                    this.width = value;
                    lvwRecherche.Width = value;
                }
                get
                {
                    return this.width;
                }
     
            }
    En gros, elle s'appelle elle-même indéfiniment, ce qui cause un stack overflow (dépassement de capacité de la pile)
    Il faut utiliser un champ pour stocker la valeur de la propriété, comme ça par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
            private int _width;
            public int width
            {
                set
                {
                    this._width = value;
                    lvwRecherche.Width = value;
                }
                get
                {
                    return this._width;
                }
     
            }

    Mais de toutes façons cette propriété ne sert à rien : UserControl a déjà une propriété Width, et si tu veux que le ListView conserve la même taille que le UserControl, il suffit de jouer sur la propriété Dock (ou Anchor selon ce que tu veux faire exactement)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Points : 52
    Points
    52
    Par défaut
    Mais de toutes façons cette propriété ne sert à rien : UserControl a déjà une propriété Width, et si tu veux que le ListView conserve la même taille que le UserControl, il suffit de jouer sur la propriété Dock (ou Anchor selon ce que tu veux faire exactement)
    J'aimerais que mon listview garde la meme largeur que mon controle, mais disons la hauteur - 50 (pour ajouter un textbox en bas)

    Est-ce que Dock ou Anchor me donne cette latitude?

    Merci en passant pour le _width, c'était dans le mille...

  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 753
    Points
    39 753
    Par défaut
    Citation Envoyé par FadeOut Voir le message
    Est-ce que Dock ou Anchor me donne cette latitude?
    Oui, et même la longitude


    Blague à part : Anchor permet de "figer" la distance entre le bord d'un contrôle et le bord de son container. Tu peux contrôler ça séparément pour chaque bord. Si tu définis l'ancrage sur des bords opposés (Left et Right par exemple) le contrôle sera redimensionné si nécessaire pour rester toujours à la même distance des bords.
    Dans ton cas, positionne le ListView de façon à laisser un espace de 50 pixels en bas, et définis sa propriété Anchor à Top, Left, Right, Bottom (ancré de tous les côtés). De cette façon, le ListView restera toujours à la même distance des bords du UserControl, même si tu redimensionnes le UserControl.

  5. #5
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut


    Sacré TomLev

    J'en ris encore de ta longitude !

    Cela étant venant du C je suis plutot avare des accesseur que je n'emploie que quand je les estime utile

    Et le probleme de FadeOut me conforte dans l'idée qu'user des accesseurs en veux tu en voilà "...parce que que c'est comme ca qu'on à appris..." fini par produire l'effet inverse de ce qu'ils peuvent apporter (outre l'alourdissement de la lisibilité)

    (remarque d'un développeur pas trop academique)

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par olibara Voir le message

    Cela étant venant du C je suis plutot avare des accesseur que je n'emploie que quand je les estime utile

    Et le probleme de FadeOut me conforte dans l'idée qu'user des accesseurs en veux tu en voilà "...parce que que c'est comme ca qu'on à appris..." fini par produire l'effet inverse de ce qu'ils peuvent apporter (outre l'alourdissement de la lisibilité)

    (remarque d'un développeur pas trop academique)
    Je suis interessé par ton commentaire, car en effet, ma "manie" d'accesseuriser à peu près tout, y compris les accesseurs eux-même ... viens bel et bien du côté académique. Je comprends l'utilité philosophique sous-jacente à cette utilisation, mais cela deviens en effet extremement lourd à lire, et Ô combien long à coder.... Mais selon toi, quel serait le meilleur moment d'utiliser ces artifices?

    et en passant, merci Tomlev, mon problème est pratiquement résolu maintenant!

  7. #7
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Pour moi l'accesseur est utile quand la modification d'une variable implique un controle indépendant du programmeur ou un traitement implicite immédiat

    Et le traitement implicite c'est aussi parfois casse gueulle

    (qui n'a pas déja eté emmerdé par une cascade d'event intempestive lors du chargement d'un combo par exemple )

    On peut trouver un avantage au traitement implicite quand on developpe a plusieurs sur un projet car on centralise la gestion d'un comportement et donc la visibilité du traitement.

    Moi j'utilise soit quand c'est vraiment utile a mon sens mais certainement pas de maniere généralisée.

  8. #8
    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 753
    Points
    39 753
    Par défaut
    Citation Envoyé par FadeOut Voir le message
    mais cela deviens en effet extremement lourd à lire, et Ô combien long à coder
    en C# 3, avec les propriété auto-implémentées, ce n'est ni long à écrire ni long à lire...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public int Toto { get; set; }
    D'ailleurs, même avec les versions précédentes, les snippets permettent d'écrire des propriétés très rapidement...

    Citation Envoyé par olibara Voir le message
    Pour moi l'accesseur est utile quand la modification d'une variable implique un controle indépendant du programmeur ou un traitement implicite immédiat
    Il y a d'autres cas où c'est utile : par exemple, la sérialisation XML ne prend en compte que les propriétés publiques, pas les champs. Pareil pour le contrôle PropertyGrid il me semble...

    Perso, ma stratégie c'est d'utiliser des accesseurs pour tout ce qui est public, et des champs pour ce qui est privé

Discussions similaires

  1. Utiliser un control activeX VB6 sous Visual Studio
    Par yal001 dans le forum Développement Windows
    Réponses: 3
    Dernier message: 03/12/2013, 10h07
  2. un clic droit dans le code fait planter visual studio
    Par ooxoo dans le forum Visual Studio
    Réponses: 2
    Dernier message: 24/09/2009, 14h58
  3. Ajax Control Toolkit - v1.0 sur Visual Studio 2008
    Par samworld dans le forum ASP.NET
    Réponses: 7
    Dernier message: 21/04/2009, 10h52
  4. Réponses: 4
    Dernier message: 13/02/2008, 15h05
  5. Un TextBox dans un Control ActiveX fait planter VB6
    Par nicolashenry974 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 21/07/2006, 14h13

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