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 Presentation Foundation Discussion :

Intégrer un winform existant dans un controle wpf


Sujet :

Windows Presentation Foundation

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 38
    Points : 43
    Points
    43
    Par défaut Intégrer un winform existant dans un controle wpf
    Bonjour,

    j'ai un projet en winform que je veux intégrer dans un autre projet wpf.

    j'ai mis les deux projet dans une seule solution visual studio.

    Ensuite j'ai ajouter le projet qui contient les winform comme référence dans le projet wpf.

    J'ai ajouté ensuite dans un nouveau contrôle wpf les références à winformintegration.dll

    J'ai ajouté le winformhost à mon wpf, j'ai instancié le form que je veut integrer et enfin, j'ai affecté ce form comme le child du winformhost.

    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
     
    public WFP_Control()
            {
                InitializeComponent();
     
                WindowsFormsHost host = new WindowsFormsHost(); //le winformhost qui va accueillir la winform
     
                grid.Children.Add(host);    // ajout du host au grid du control wpf
     
                host.Margin = new Thickness(0, 0, 0, 0);
     
     monprojetWinForm.maWinForm formAintegrer = new monprojetWinForm.maWinForm(); //instanciation du winform
                try
                {
                    host.Child = formAintegrer ; //affectation du winform comme le child du host
                }
                catch (Exception ex)
                { }
            }
    Le probleme qui se pose est que le compilateur refuse cette derniere affectation. l'exception générée est la suivante :

    Le contrôle enfant ne peut pas être un formulaire de niveau supérieur
    y'a t il une solution pour contourner ce problème.

    Merci

  2. #2
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Salut,

    Dans le WindowsFormHost, il faut ajouter ton contrôle WindowsForm. Pour cela, il faut faire comme dans l'exemple suivant :
    http://msdn.microsoft.com/fr-fr/libr...formshost.aspx

    Depuis le code C#, il faut utiliser la propriété Child du WindowsFormHost.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 38
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par binoo Voir le message
    Salut,

    Dans le WindowsFormHost, il faut ajouter ton contrôle WindowsForm. Pour cela, il faut faire comme dans l'exemple suivant :
    http://msdn.microsoft.com/fr-fr/libr...formshost.aspx

    Depuis le code C#, il faut utiliser la propriété Child du WindowsFormHost.
    j'ai fait exactement ceci, mais voila, il y a cette exception à l'affectation du child. En fait, j'ai mis à jour le premier message

  4. #4
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    monprojetWinForm.maWinForm est une fenêtre ou un contrôle ?

    Il est impossible d'ajouter une Form (fenêtre) dans un WindowsFormHost. Seul un contrôle (ActiveX, contrôle utilisateur, contrôles classique: boutons, textbox, ...) peut y être ajouté.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 38
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par binoo Voir le message
    monprojetWinForm.maWinForm est une fenêtre ou un contrôle ?

    Il est impossible d'ajouter une Form (fenêtre) dans un WindowsFormHost. Seul un contrôle (ActiveX, contrôle utilisateur, contrôles classique: boutons, textbox, ...) peut y être ajouté.
    c'est un Form!!
    voici le code declaration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    namespace monprojetWinForm
    {
        public partial class maWinForm: Form
        {
    ....
            }
    }

  6. #6
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Citation Envoyé par Mustang.ensi
    c'est un Form!!
    voici le code declaration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    namespace monprojetWinForm
    {
        public partial class maWinForm: Form
        {
    ....
            }
    }
    Alors tu ne peux pas l'intégrer dans un WindowsFormHost...

    La seule solution est de faire un contrôle utilisateur du contenu présent dans ta Form. Ce contrôle utilisateur pourra lui être intégré dans le WindowsFormHost.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 38
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par binoo Voir le message
    Alors tu ne peux pas l'intégrer dans un WindowsFormHost...

    La seule solution est de faire un contrôle utilisateur du contenu présent dans ta Form. Ce contrôle utilisateur pourra lui être intégré dans le WindowsFormHost.

    j'y ai pensé, ça destabilise un peu l'application intégrée mais c'est mieu que rien :/

    Merci

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/12/2013, 10h57
  2. Réponses: 1
    Dernier message: 14/06/2012, 03h19
  3. [Débutant] Intégrer un programme existant dans l'IHM d'un nouveau programme
    Par Maelkun dans le forum Développement Windows
    Réponses: 1
    Dernier message: 12/06/2012, 15h14
  4. Tester l'existence d'un control dans une form
    Par Naruseb dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 08/08/2006, 18h30
  5. Controle existence dans une table
    Par Daniel MOREAU dans le forum Access
    Réponses: 2
    Dernier message: 15/05/2006, 13h59

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