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

C# Discussion :

Reflexion sur un control


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 6
    Par défaut Reflexion sur un control
    bonjour
    j'aimerais implemente une reflexion sur une richtexbox
    dans ma frame j'ai creer dynamiquement un control richTextBox1
    voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    FindCtl = FindControl(this, richTextBox1); // fonction recherchant un control
     Type type = FindCtl .GetType();
     object[] ListArgs1 = new object[1];
                           ListArgs1[0]="T_Degagement";
     object reflectOb = type.InvokeMember("Find", BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Static, null, null, ListArgs);
     
                    MessageBox.Show("TxtReturn:" + reflectOb.ToString());
    le code compile mais ne me retourne rien
    merci pour votre aide
    cordialement
    jean louis

  2. #2
    Membre confirmé Avatar de Klivor
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    143
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 143
    Par défaut
    Citation Envoyé par johnnous Voir le message
    bonjour
    j'aimerais implemente une reflexion sur une richtexbox
    dans ma frame j'ai creer dynamiquement un control richTextBox1
    voici mon code:
    FindCtl = FindControl(this, richTextBox1); // fonction recherchant un control
    Type type = FindCtl .GetType();
    object[] ListArgs1 = new object[1];
    ListArgs1[0]="T_Degagement";
    object reflectOb = type.InvokeMember("Find", BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Static, null, null, ListArgs);

    MessageBox.Show("TxtReturn:" + reflectOb.ToString());

    le code compile mais ne me retourne rien
    merci pour votre aide
    cordialement
    jean louis

    Essaye en mode pas à pas pour voir ou sa plante.

  3. #3
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Salut,

    ton bout de code ne nous éclaire pas des masses sur ce que tu veux faire. Qu'est-ce que tu veux exactement ? Que veux tu dans ReflectOb ? Pourquoi recours-tu à la réflexion ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 6
    Par défaut Plus clair
    Je suis en train de ce créer une IHM, à partir d'un fichier XML dans lequel je configure mes différent objet label button,textbox RichTextBox etc ..
    j'ai donc un exe qui lit le fichier Xml et qui créer et place mets objet à la bonne place
    de plus lorsque que le click sur un bouton je peux executer une action
    exemple Label1.Text="tutu"
    par reflexion j'implémente ma propriété
    par contre je n'arrive pas à implémenter une methode
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Label1.Text=RichTextBox1.Find("coucou");
    j'espère être plus clair
    cordialement
    jean louis

  5. #5
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    en fait, tu es en train de faire du WPF.. sans le savoir...

    Peut-etre qu'il serait plus simple de faire du WPF directement ?

  6. #6
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Citation Envoyé par johnnous Voir le message
    j'espère être plus clair
    Oui

    Tu n'as pas besoin de réflexion. La méthode FindControl que tu as dans ton code est codée par toi, non ? Elle prend un string en paramètre et renvoie un Control ? Si c'est le cas, tu n'as qu'à le caster en RichtextBox, et appeler Find dessus.
    De même, d'ailleurs, pour les propriétés. Et notamment, pour la propriété Text, même pas besoin de caster, puisqu'elle est définie au niveau de Control.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // je suppose que ton FindControl prend un string et renvoie un Control
    Control ctrl = FindControl(this, leNomDeTaTextBox);
    ctrl.Text = "haha";
    RichTextBox rtb = (RichTextBox)FindControl(this, richTextBox1);
    rtb.Find(trucbidule);
    La réflexion, c'est surpuissant ; mais on en a rarement besoin (surtout quand on débute).

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 47
    Par défaut
    J'ai des doutes sur la surcharge de FindControl ... Tu ne ferais pas justement une erreur ?
    Je n'ai pas compris si tu développes un webform ou un winform ?
    Dans le cas des webform, il me semble que les richtextbox n'existent pas ... Enfin nativement, tu as peut-être une library particulère.
    Dans le cas d'un winform c'est FindControl qui n'existe pas, tu devrais plutôt utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RichTextBox MaTextBox = (RichTextBox)this.Controls.Find(lenomdelarichbox, true)[0];

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 6
    Par défaut
    je suis d'accord un cast peu marche mais je ne sais pas au départ quel est mon control il est définit dans mon fichier XML (il s'agit d'une RichTextBox ou label ...)
    donc je ne le connais que son nom et le nom de la methode que je veux implémenter
    par exemple dans le fichier XML
    j'ai un Bouton personnaliser avec une propriété onClick
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <MyButton1>
    <OnClick>
    RichTextBox1.Find("toto")
    </OnClick>
    </MyButton1>
    donc dans mon IHM je recupere lorsque je clique surMyButton1 l'action
    RichTextBox1.Find("toto")
    grace à ma fonction FindCtrl je recherche dans ma forme le control RichTextBox1
    puis je veux lui appliquer la méthode Find avec le paramètre "toto"

    Actuellement j'y arrive très bien avec les propriétés
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <MyButton1>
    <OnClick>
    Label1.Text=MyButton1.Text
    </OnClick>
    </MyButton1>
    voici mon code dans ce cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CtrlName="MyButton1" TypeName="Text"
    FindCtl = null;
    FindCtl = FindControl(this, CtrlName);
    Type type = FindCtl.GetType();
    sTmp = "\"" + type.GetProperty(TypeName).GetValue(FindCtl, null).ToString() + "\"";
    valeur lu : est donc le text de MyButton1

Discussions similaires

  1. Question sur un controle de type "button"
    Par Invité dans le forum Windows
    Réponses: 2
    Dernier message: 29/05/2004, 11h30
  2. Réponses: 3
    Dernier message: 11/05/2004, 18h39
  3. [VB6]Existence d'un image sur un control
    Par oazar dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/04/2004, 17h00
  4. [VB.Net] Faire du JS sur des contrôles côté serveur
    Par TagadaTsoin dans le forum ASP.NET
    Réponses: 4
    Dernier message: 03/11/2003, 15h51
  5. [VB6] Comment boucler sur des controls d'un form ?
    Par lankviller dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/01/2003, 16h29

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