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#][PPC] : BindingContext vide sur PPC


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 20
    Points : 13
    Points
    13
    Par défaut [C#][PPC] : BindingContext vide sur PPC
    Bonjour,

    Bon j'ai déjà posté sur les bindings sur PPC, mais là ça commence vraiment à m'énerver

    Je m'explique : je suis en train de créer un composant qui hérite de Panel et qui permet de visualiser les champs d'une DataView. En fonction du type des champs, je construit dynamiquement (dans le constructeur de mon composant) un Control adapté (TextBox, CheckBox ou ComboBox).

    Je veux ensuite pouvoir naviguer entre les rows de ma DataView. Pour cela, lors de la construction des Control, je leur ajoute un Binding (ça ça marche ) et je veux ensuite avoir un BindingManagerBase pour contrôler tout ça. J'en ajoute donc un avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    bmView=this.BindingContext[dView,""];
    Je précise bien que this est la référence à mon composant hérité de Panel.
    Je modifie la Position de bmView dans des méthodes de ma classe (NextRecord() et Prevrecord()) qui sont appelées par des boutons sur ma Form de test.

    Le problème c'est que tout ça fonctionne parfaitement lorsque je lance mon applide test sous windows mais lorsque je la lance sur l'émulateur PocketPC (2002), les contrôles n'affichent rien et les boutons ne font rien non plus Mais aucune exception n'est lancée, c'est simplement vide.

    J'ai fait un bête test pour voir si le BindingContext de mon composant contenait la vue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MessageBox.Show("BindingContext contient dView : "+base.BindingContext.Contains(dView));
    Ca m'affiche true sous windows mais false sous l'émulateur, avec le même programme!

    Si quelqu'un comprend pourquoi et peut m'expliquer...

    Merci d'avance!

  2. #2
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    J'ai aussi oublié de préciser un truc qui peut avoir son importance. Avant de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    bmView=this.BindingContext[dView,""];
    Je sui obligé d'initialiser le BindingContext de mon composant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.BindingContext=new BindingContext();
    Sinon il est null. J'ai pas une grande expérience dans la création de composants, y'a peut-être quelque chose qui m'échappe :

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    Up! Si quelqu'un a déjà eu ce style de problème (sans doute une subtilité de l'émulateur que je ne maitrise pas), peut-il m'aider?

  4. #4
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    Bon, si ça peut aider, je suis en train d'inspecter mon BindingManagerBase (bmView). Bien que les contrôles soient vides, le Current de bmView ne l'est pas lui :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MessageBox.Show("Current row in bmView : "+((System.Data.DataRow)(((System.Data.DataRowView)(((System.Object)(bmView.Current)))).Row)).ItemArray[0].ToString());
    J'affiche ça à chaque changement de position de bmView (parcours des rows de ma vue) et la valeur change.

    Par contre le BindingContext de mon composant contient bien dView à ce moment là (alors que ce n'est pas le cas dans le constructeur) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MessageBox.Show("BindingContext contains dView : "+this.BindingContext.Contains(dView,""));
    Si quelqu'un y comprend quelque chose, je suis tout ouïe!

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    Bon j'ai réussi à m'en sortir tout seul en fait. En initialisant bmView avant la construction dynamique de mes composants, ça fonctionne. Par contre, il me dit toujours que ma vue n'est pas dans bmView! Bizarre

    C'est vraiment curieux le comportement du CF des fois...

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

Discussions similaires

  1. [Logiciel] Virtualiser Linux sur PPC
    Par ClarusAD dans le forum Apple
    Réponses: 3
    Dernier message: 04/01/2010, 12h57
  2. GetFileVersionInfo sur PPC
    Par Kyor52 dans le forum C#
    Réponses: 4
    Dernier message: 20/04/2009, 09h34
  3. Serveur apache sur le PC et Client sur Ppc
    Par papitou38 dans le forum Serveurs (Apache, IIS,...)
    Réponses: 2
    Dernier message: 10/04/2008, 17h28
  4. [VB.NET 2.0] Comment lister les processus sur PPC ?
    Par catzguy dans le forum Windows Mobile
    Réponses: 6
    Dernier message: 16/04/2006, 00h38
  5. [CF][C#] Comment consommer un WebService sur PPC ?
    Par Jérôme Lambert dans le forum Windows Mobile
    Réponses: 1
    Dernier message: 21/02/2006, 11h04

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