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

Windows Forms Discussion :

Héritage Contrôle WinForms


Sujet :

Windows Forms

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    août 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : août 2019
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Héritage Contrôle WinForms
    Bonjour à tous,

    J'ai quelques soucis avec l'héritage de contrôles, et j'aurai besoin d'aide svp.

    J'ai créé un contrôle tout simple "UserControl1", avec un GroupBox (dock=FILL) et un bouton "Button1" ancré en bas à droitre
    Ensuite, j'ai créé un autre contrôle "UserControl2", qui hérite de "UserControl1". Jusque là, tout va bien : mon "UserControl2" a bien les mêmes composants graphiques. Et si je le redimensionne, tout se passe bien.

    Nom : Capture.PNG
Affichages : 62
Taille : 1,8 Ko

    Mais si j'ajoute un composant (genre un label) dans mon "UserControl2", que j'enregistre, je ferme, et j'ouvre à nouveau le Designer, c'est la cata.
    Le redimensionnement ne se passe plus correctement, et mon bouton 1 disparaît.. Si je regarde la structure du document, je m’aperçois qu'il est en dehors de mon Contrôle.


    Nom : Capture_2.PNG
Affichages : 64
Taille : 6,5 Ko

    D'ou mes questions :
    - Ai-je loupé une étape ?
    - Faut-il remplir des propriétés avec des valeurs spécifiques ?

    J'aimerai vraiment trouver une solution à ce problème.
    Le but étant d'avoir un contrôle de base avec des boutons de bases (style fermer / valider), et de pouvoir l'hériter et le spécialiser en fonction des besoins.

    Merci pour votre aide.

  2. #2
    Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    août 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : août 2019
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Personne n'a d'idée ??

    Pour info complémentaire, j'utilise Visual Studio 2017 Community.
    Je ne pense pas que ça ait une incidence mais bon...

    Merci.

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : avril 2007
    Messages : 13 657
    Points : 24 700
    Points
    24 700
    Par défaut
    j'ai essayé de reproduire en suivant tes explications et déjà je n'arrive pas à poser de label sur le groupbox, celui était dans uc1 depuis uc2 il refuse qu'on ajoute des choses dedans

    et quel est le parent de ton bouton, uc1 ou le groupbox ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    août 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : août 2019
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Pour que le composant "GroupBox1" soit modifiable, il faut mettre la propriété "Modifiers" à "Protected" au niveau du contrôle "UserControl1". Ainsi, on laisse la possibilité de le modifier sur les contrôles héritant de UserControl1.
    Et le bouton a pour parent "GroupBox1"

    Nom : Capture.PNG
Affichages : 47
Taille : 7,3 Ko

    Pour info, j'ai fait quelques recherches à côté. J'ai trouvé une astuce pour forcer le redimensionnement.
    Il faut supprimer une ligne de code au niveau du Designer => https://stackoverflow.com/questions/...d-form-c-sharp


    Mais cette solution me semble peu efficace. En effet, il faut supprimer la ligne à chaque modification du Designer, ce qui me parait assez lourd.

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : avril 2007
    Messages : 13 657
    Points : 24 700
    Points
    24 700
    Par défaut
    c'est donc un dommage collatéral de comment à été prévu visual studio et Windows forms, et qui n'a donc pas été prévu pour faire ça (= un anchor dans un panel hérité dans un uc/form, et pas à la même taille)
    groupbox implémente une interface qui fait que vs met en pause le layout (recalcul des location des enfants) pendant la création du uc, et donc le size de celui ci est modifié pendant ce temps ce qui fait que le bouton n'est pas déplacé automatiquement (ce que anchor est censé faire)

    il y a plusieurs moyens de s'en sortir, parfois avec un peu de code, comme gérer l'event size changed sur UC1 pour recalculer l'emplacement du bouton (ce que fait anchor en fait)
    ou alors ne pas modifier la taille du UC2 pour qu'elle soit la même que UC1 (sachant que quand tu poseras des UC2 là tu pourras choisir leur taille et ca devrait aller)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    août 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : août 2019
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Ok, c'est bien ce que je craignais...
    Du coup, je vais voir pour essayer de contourner le problème, en créant des contrôles que j’implémenterai dans les différents formes, histoire ce centraliser le code.

    Dans tous les cas, merci pour ton retour.

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

Discussions similaires

  1. [SharpDevelop][C#] Question sur certains contrôles WinForms
    Par fab56 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 16/01/2009, 18h27
  2. Réponses: 2
    Dernier message: 18/07/2008, 15h43
  3. Thread et contrôle WinForm
    Par AoSiX dans le forum Windows Forms
    Réponses: 3
    Dernier message: 12/02/2008, 17h19
  4. Réponses: 2
    Dernier message: 01/06/2005, 13h13

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