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 d'affichage de données dans ma textbox


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 162
    Points : 64
    Points
    64
    Par défaut [C#]Problème d'affichage de données dans ma textbox
    Bonjour à tous,

    Je suis en train de réaliser une appli pour interagir avec mon serveur Active Directory.

    Sur mon premier form, j'ai un bouton (button1) et une textbox (textbox1).
    J'ai créé dans une classe à part (ADIntercation) mon code permettant d'afficher le SAMAccountName dans ma textbox lorsque je clique sur le bouton.

    Voici le code de la classe de mon form1 (ADOracle) :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.DirectoryServices;
     
    namespace ADOracle
    {
        public partial class ADOracle : Form
        {
     
     
            ADInteraction actionAD = new ADInteraction();
     
            public ADOracle()
            {
                InitializeComponent();            
            }
     
            private void quit_Click(object sender, EventArgs e)
            {
                Application.Exit();
            }
     
            private void ADOracle_Load(object sender, EventArgs e)
            {            
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                actionAD.ListUsers();
            }
     
        }
    }
    Et voici le code de ma classe ADInteraction :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.DirectoryServices;
    using System.Windows.Forms;
     
    namespace ADOracle
    {
        public class ADInteraction
        {
            DirectoryEntry Ldap;
            ADOracle controlsAD = new ADOracle();
     
            public void ListUsers()
            {
     
                try
                {
                    Ldap = new DirectoryEntry("LDAP://"monDomaine, monUser, monPassword);
                    object connect = Ldap.NativeObject;                
                    DirectorySearcher searcherUsers = new DirectorySearcher(Ldap);
                    searcherUsers.Filter = "(&(objectClass=User) (SAMAccountName=benji))";
                    SearchResult sr_result = searcherUsers.FindOne();
                    DirectoryEntry de_result = new DirectoryEntry();
                    de_result = sr_result.GetDirectoryEntry();
                    controlsAD.textBox1.Text = de_result.Properties["SAMAccountName"].Value.ToString();
                }
                catch (Exception Ex)
                {
                    MessageBox.Show(Ex.Message);
                }
            }
        }
    }
    Mais voilà, rien ne s'affiche dans ma textbox lorsque je clique sur mon bouton. Par contre, lorsque j'affiche ce que je recherche dans une MessageBox, cela fonctionne.

    Pouvez-vous m'aider s'il vous plaît ?

    Je vous remercie beaucoup

  2. #2
    Membre averti
    Avatar de sam_XIII
    Profil pro
    Inscrit en
    Août 2003
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 221
    Points : 353
    Points
    353
    Par défaut
    c'est normal que ca ne marche pas car tu crees une autre instance de ta classe "ADOracle".

    pour faire ce que tu veux il faut que tu passes ton objet "ADOracle" en paramètre à ta classe "ADInteraction"

    ou alors tu peux créer une propriété "Resultat" dans ta classe "ADInteraction" et faire quelque chose de ce genre :

    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
    20
    21
    22
    23
    24
    25
    26
     
     public class ADInteraction
    {
     
    private string _result;
     
    public string Resultat
    {
        get{return _result;}
    }
    public void ListUsers()
            {
     
                try
                {
                    // .........
                    de_result = sr_result.GetDirectoryEntry();
     
    // ici      
    _result = de_result.Properties["SAMAccountName"].Value.ToString();
                }
                catch (Exception Ex)
                {
                    MessageBox.Show(Ex.Message);
                }
    }


    puis dans ta classe "ADOracle " tu aurais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      private void button1_Click(object sender, EventArgs e)
            {
                actionAD.ListUsers();
    textBox1.Text = actionAD.Resultat;
            }

    j'ai pas vs installé pour tester mais voila l'idée en gros

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 270
    Points : 270
    Points
    270
    Par défaut
    pourquoi ne pas faire ceci :

    dans le form 1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private void button1_Click(object sender, EventArgs e)
    {
           this.textBox1.text = actionAD.ListUsers();
    }
    et dans ADInteraction , tu as alors une fonction qui renvoie la valeur à afficher:

    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
    20
     
    public string ListUsers()
    {
     
          try
          {
              Ldap = new DirectoryEntry("LDAP://"monDomaine, monUser, monPassword);
              object connect = Ldap.NativeObject;                
              DirectorySearcher searcherUsers = new DirectorySearcher(Ldap);
              searcherUsers.Filter = "(&(objectClass=User) (SAMAccountName=benji))";
              SearchResult sr_result = searcherUsers.FindOne();
              DirectoryEntry de_result = new DirectoryEntry();
              de_result = sr_result.GetDirectoryEntry();
              return de_result.Properties["SAMAccountName"].Value.ToString();
           }
           catch (Exception Ex)
           {
                MessageBox.Show(Ex.Message);
           }
    }

  4. #4
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 162
    Points : 64
    Points
    64
    Par défaut
    merci pour ces réponses.

    la solution de pcdj fonctionne très bien.

    Mais je voudrais aussi tester celles de sam_XIII.

    Peux-tu me donner plus d'infos sur le passage en paramètre l'objet "ADOracle" à la classe "ADInteraction", car j'ai un peu de mal justement sur le concept de passage de paramètre ?

    J'ai essayé ton autre solution sam_XIII, mais visual studio 2005 ne trouve pas la méthode Get et me renvoie une erreur.

    Une idée ??

    Merci beaucoup

  5. #5
    Membre averti
    Avatar de sam_XIII
    Profil pro
    Inscrit en
    Août 2003
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 221
    Points : 353
    Points
    353
    Par défaut
    Citation Envoyé par brazilia28

    Peux-tu me donner plus d'infos sur le passage en paramètre l'objet "ADOracle" à la classe "ADInteraction", car j'ai un peu de mal justement sur le concept de passage de paramètre ?
    si tu n'es pas familier avec le passage de paramètres, j'en conclus que tu débutes en programmation, donc je te conseille de lire quelques cours (tu en trouveras sur le site de developpez )


    sinon ca donnerai ceci en gros :

    dans ta classe "ADInteraction"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    private ADOracle _myform = null;
     
    // le constructeur attendra un parametre de type    "ADOracle"    
     public ADInteraction(ADOracle TheForm)
            {
                _myform = TheForm;
     
            }
     
            public void ListUsers()
            {
                _myform.textBox1.Text = "ta valeur";
            }
    et dans ta classe ADOracle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    private void button1_Click(object sender, EventArgs e)
            {
                ADInteraction c1 = new ADInteraction(this);
                c1.ListUsers();
            }

    (bien entendu ta textbox devra être déclarée en public)

    Citation Envoyé par brazilia28
    J'ai essayé ton autre solution sam_XIII, mais visual studio 2005 ne trouve pas la méthode Get et me renvoie une erreur.
    quelle erreur te renvoi-t-il ?

Discussions similaires

  1. Réponses: 6
    Dernier message: 03/03/2010, 16h54
  2. Réponses: 1
    Dernier message: 31/08/2009, 05h17
  3. probléme d'affichage des données dans le datagridview
    Par asprog dans le forum Windows Forms
    Réponses: 0
    Dernier message: 13/05/2009, 22h23
  4. Réponses: 2
    Dernier message: 12/09/2008, 11h30
  5. Réponses: 3
    Dernier message: 11/10/2007, 12h18

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