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

Dotnet Discussion :

[WinForms][.NET2.0]Bug avec des contrôles "Generic" [FAQ]


Sujet :

Dotnet

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Par défaut [WinForms][.NET2.0]Bug avec des contrôles "Generic"
    Bonjour à tous,

    J'ai développé une petite classe MyDataGridView dans laquelle j'ai implémenté des petites fonctions spécifiques à mon application.

    Seulement, afin de travailler avec un certain type d'objet, je voulais créer une classe générique. Ceci afin d'éviter un maximum d'appel de fonctions et de casts.

    Seulement quand j'essaye d'accéder au design de ma fenêtre principale il me dit :
    Could not find type 'MyDataGridView'. Please make sure that the assembly that contains this type is referenced. If this type is a part of your development project, make sure that the project has been successfully built.
    pourtant je n'ai aucun problème lors de la compilation ni de l'exécution.

    Savez-vous s'il y a moyen d'empêcher ce bug?

    Merci d'avance,
    Nicolas

  2. #2
    Membre Expert Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Par défaut
    solution 1 : se passer du designer de VS.Net

    solution 2 : vérifier tes références

    solution 3 : regénérer la solution, redémarrer VS.Net et réessayer

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Par défaut
    Salut Mose,

    Solution 1 : plutôt gênant lorsque l'application est encore loin d'être développée et où l'interface n'en est qu'à ses balbutiements.

    Solution 2 : mes références sont correctes vu que je peux compiler et exécuter sans problèmes.

    Solution 3 : déjà essayé.


    La solution que j'ai trouvée pour contourner cette singularité du designer est de créer des classes utilisant ma classe générique et ce sont ces classes que j'utilise directement.
    Un peu redondant mais ça fonctionne.

  4. #4
    Membre émérite
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Par défaut
    Il me semble que ton erreur est due au fait que ton objet n'est pas encore instancié au moment où le Designer veut le dessiner. La valeur de sa variable est alors à Null (Nothing en VB).

    La solution serait alors de te débrouiller pour que ton DGV puisse être instancié aussitôt que tu le déposes dans ton form en mode Design. Pour ça il faut que tous les objets que ton DGV va éventuellement devoir instancier au moment de sa création puissent l'être et ainsi de suite ...

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Par défaut
    Je remonte ce vieux post tout simplement pour indiquer qu'il est noté dans l'aide qu'il n'est pas possible d'utiliser les Generics directement :
    Citation Envoyé par msdn
    Design-Time Error: "Failed to create component 'component name'"
    You can receive this error when you are creating your component or control on the design surface from the Toolbox.

    Your component or control cannot be a generic type, which is also called a template type or a parameterized type. The design environment does not support generic types.
    If your generic type derives from UserControl and you attempt to run it in Visual Studio's UserControl Test Container, you will receive the following error:

    Failed to create UserControl 'name'

    Although your components and controls cannot be generic types, they can use generic types.
    Pour palier à cela, il faut donc utiliser un contrôle utilisant le Generic...

  6. #6
    Invité de passage
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1
    Par défaut Illustration
    Si ta classe mère générique est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //SuperDataGrid.cs
     
    public class SuperDataGrid<TData>  : UserControl { 
      //code here ... 
    }
    et que tu souhaites créer une SuperDataGrid pour des objets DateTime. Alors, il faut que dans ton fichier DateTimeSuperDataGrid.cs, tu mettes le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    //DateTimeSuperDataGrid.cs
     
    public class DateTimeSuperDataGrid : DateTimeSuperDataGridBase { 
      //code here ... 
    }
     
    public class DateTimeSuperDataGridBase : SuperDataGrid<DateTime>{ }
    L'ordre des classes est important sinon le designer va te dire des mots méchants.

    Normalement, le designer de Visual Studio 2005 te permettra maintenant de visualiser DateTimeSuperDataGrid.

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

Discussions similaires

  1. Etat - problème avec des contrôles vides
    Par ver_for dans le forum IHM
    Réponses: 2
    Dernier message: 17/09/2008, 15h55
  2. bug (ou pas bug) avec des nombres décimaux
    Par cyberyan dans le forum Langage
    Réponses: 7
    Dernier message: 15/09/2008, 17h39
  3. comment faire une classe avec des contrôles?
    Par jffaber dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/08/2008, 16h19

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