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

Windows Forms Discussion :

[C#]problème de casting


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de Blo0d4x3
    Inscrit en
    Octobre 2003
    Messages
    593
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 593
    Par défaut [C#]problème de casting
    Bonjour, j'ai un petit soucie de casting.
    J'ai créé un composant dérivant d'un panel, appellé basePanel. Cette objet possède deux classe fille DynPanel et NOPanel.

    A un moment dans mon code je dois caster basePanel en Dynpanel.

    Je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    BasePanel basePanel = new BasePanel();
    ...
     
    DynPanel dynPanel = (DynPanel)basePanel;
    Et la, à l'exécution j'ai une erreur comme quoi le cast est impossible.

    Merci de votre aide.

  2. #2
    Xno
    Xno est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 71
    Par défaut
    Salut,

    Ca ne serait pas plutôt comme ça que tu voudrais faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      // Déclaration de la variable basePanel
      private BasePanel basePanel;
     
      // "Spécialise" la variable en DynPanel
      basePanel = new DynPanel();
      ...
    Sinon, je pense qu'il faut faire une fonction qui copie l'objet basePanel dans l'objet dynPanel en le passant en référence dans le constructeur de la classe DynPanel: public DynPanel( ref BasePanel basePanel )

  3. #3
    Membre éclairé
    Avatar de Blo0d4x3
    Inscrit en
    Octobre 2003
    Messages
    593
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 593
    Par défaut
    J'ai utilisé ta méthode, mais souvent
    lors du :

    [code]
    this.pagecompte.Controls.Add(this.basePanel);
    this.basePanel.Location = new System.Drawing.Point(184, 24);
    [code]

    que j'effectue dans une de mes propres méthodes, j'ai cette exception:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Une exception non gérée du type 'System.ArgumentException' s'est produite dans system.windows.forms.dll
     
    Informations supplémentaires : Les contrôles créés sur un thread ne peuvent pas être parents d'un contrôle d'un autre thread.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Par défaut
    Citation Envoyé par Blo0d4x3
    J'ai utilisé ta méthode, mais souvent
    lors du :

    [code]
    this.pagecompte.Controls.Add(this.basePanel);
    this.basePanel.Location = new System.Drawing.Point(184, 24);
    [code]

    que j'effectue dans une de mes propres méthodes, j'ai cette exception:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Une exception non gérée du type 'System.ArgumentException' s'est produite dans system.windows.forms.dll
     
    Informations supplémentaires : Les contrôles créés sur un thread ne peuvent pas être parents d'un contrôle d'un autre thread.
    this.basePanel est simplement créé dans un autre thread que this.pagecompte.
    C'est interdit

    Les threads ne doivent pas être utilisés pour créer des contrôles (à la rigueur, on peut créer une boîte de dialogue indépendante des autres appartenant à un thread distinct mais je n'en vois pas l'intérêt).
    Il faut dire que les threads sont justement utilisés pour séparer le traitement de l'interface graphique.

  5. #5
    Membre éclairé
    Avatar de Blo0d4x3
    Inscrit en
    Octobre 2003
    Messages
    593
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 593
    Par défaut
    oui, mais justement les deux composants ne sont pas créés dans un thread different. Et cette exception arrivait que lorsque que mon appli perdait le focus.

    Mais apèrs un relancement de VS 2003 ca n'a plus l'air de le faire.

    Mystère....

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Par défaut
    Citation Envoyé par Blo0d4x3
    Bonjour, j'ai un petit soucie de casting.
    J'ai créé un composant dérivant d'un panel, appellé basePanel. Cette objet possède deux classe fille DynPanel et NOPanel.

    A un moment dans mon code je dois caster basePanel en Dynpanel.

    Je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    BasePanel basePanel = new BasePanel();
    ...
     
    DynPanel dynPanel = (DynPanel)basePanel;
    Et la, à l'exécution j'ai une erreur comme quoi le cast est impossible.

    Merci de votre aide.
    C'est une erreur de conception.
    L'héritage permet seulement le contraire : DynPanel est un BasePanel mais pas l'inverse.
    Effectivement, pour avoir un DynPanel, il faut faire un new DynPanel() et pas un new BasePanel(). Je suis d'accord avec Xno.

Discussions similaires

  1. [CASTS]problème de cast de Time
    Par DeVoN dans le forum Langage
    Réponses: 7
    Dernier message: 22/02/2006, 17h24
  2. [JDBC Driver][JSTL] Problème de cast de données
    Par GyLes dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 27/09/2005, 10h00
  3. problème de cast!
    Par LaseLiep dans le forum Langage
    Réponses: 3
    Dernier message: 03/06/2005, 09h30
  4. Problème de cast/serialization/externalization ?
    Par Linlin dans le forum CORBA
    Réponses: 1
    Dernier message: 06/12/2004, 16h46
  5. [C#] Problème de casting de @IDENTITY
    Par bilb0t dans le forum Accès aux données
    Réponses: 7
    Dernier message: 03/09/2004, 09h42

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