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 :

Modifier la visibilité d'un controle


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 16
    Par défaut Modifier la visibilité d'un controle
    Bonsoir,
    j'ai une classe A qui contient des methodes pour remplir ,afficher ,supprimer des donnees a partir de la base de donnees ,puis j'ai ajouter une autre classe B qui est un form qui contient un datagridview pour afficher une table quelcunte ,donc lors de chargement de ce formulaire je doit faire comme ca :
    au niveau de la classe B :
    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
        public partial class ListeClientsDS : Form
        {
     
            public static DataGridView dg1 = new DataGridView();
            public ListeClientsDS()
            {
                InitializeComponent();
            }
     
            private void ListeClientsDS_Load(object sender, EventArgs e)
            {
     
                dg1 = this.dataGridView1;
                BDSQL.AfficheClientDS();
            }
        }
    Mon probleme c'est est ce que je peut transformer le controle dataGridView1 en static pour l'utiliser dans la 1 ere classe : nom_DE_Foem.Controle
    car dans la classe A qui contient la methode AfficheClientDS() j'ai utiliser l'objet Datagridview dg1 que j'ai creer a partir du code et non pas ce que j'ai dessiner voila le code de cette methode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
       public static void AfficheClientDS()
            {
                 .
                 .
                 .
                ListeClientsDS.dg1.DataSource = ds1.Tables[0];
            }
    donc je veut la dernier ligne du code devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListeClientsDS.dataGridView1.DataSource = ds1.Tables[0];
    sans creer un autre objet (comme en VB.NET) ,je pense que ca soit clair et merci.

  2. #2
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Tu prends le problème à l'envers. Ta classe chargée de gérer tes données (chargement, suppression...) ne doit pas manipuler le DataGridView, ce n'est pas son rôle. Sa seule responsabilité c'est de fournir des données lors d'un chargement (sous la forme d'une DataTable, d'une liste d'objets...), de proposer une méthode de suppression (on lui donnera en paramètre ce qu'il faut supprimer), etc.

    Après tu n'as plus qu'à utiliser cette classe dans ton formulaire pour par exemple récupérer les données, et ensuite tu affiches ces données dans le DataGridView.

  3. #3
    Membre averti
    Inscrit en
    Février 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 16
    Par défaut
    merci d'abord pour votre reponse mais le code elle est juste je veut que l 'objet que j'ai creer a l'aide de ToolBox devient visible dans les autres classe

  4. #4
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Et je te répète que ce que tu fais n'a pas de sens en POO. Ça fonctionnerait mais ce n'est pas comme ça que l'on procède. Surtout que tu n'as pas grand chose à modifier pour faire ce que j'ai indiqué, à priori. Il suffirait juste de quelque chose comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public static DataTable GetClientDS()
    {
        ...
        return ds1.Tables[0];
    }
    Et dans ton formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dataGridView1.DataSource = LaClasse.GetClientDS();
    Après si tu préfères coder "n'importe comment" c'est ton choix. Mais ça se paye à l'usage

  5. #5
    Membre averti
    Inscrit en
    Février 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 16
    Par défaut
    bien merci ca marche mais en autre question dans cette cas la methode c'est une fonction voila :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this .dataGridView1 .DataSource =BDSQL.AfficheClientDS();
    mais par contre si je veut utilser une methode comme ca :
    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
       public static void AfficheClients()
            {
     
                connexion();
                com.CommandType = CommandType.Text;
                com.CommandText = " SELECT * FROM CLIENT ";
                com.Connection = con;
                dr = com.ExecuteReader();
                string  [] tab=new string [6];
                if (dr.HasRows )
                {
                   while  (dr.Read())
                    {
                   .
                   .
                    tab[4] = dr.GetSqlValue(5).ToString();
                    tab[5] = dr.GetSqlValue(6).ToString() ;
                    ListeClients.dg1.Rows.Add(tab);  
                    }
                   }
                dr.Close();
                con.Close(); 
            }

  6. #6
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Ta méthode doit renvoyer les données à afficher, adapte le code donc. Crée une DataTable ou bien une liste d'objets métier, la DataTable étant peut-être plus simple dans un premier temps (tu trouveras tout ce qu'il faut sur les tutos du site je pense, ou bien Google), que tu renverras à l'appelant.

    Une couche d'accès aux données n'a pas à se préoccuper de celui qui s'en sert, et encore moins de la plateforme utilisée (Windows Forms, Web, appli. console...). Tu dois juste avoir des méthodes pour manipuler les données (chargement, ajout/mise à jour, suppression). Donc ton DataGridView n'a rien à faire dans ta couche d'accès aux données.

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

Discussions similaires

  1. modifier la position d'un controle dans un userform
    Par JYL74 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/02/2008, 10h57
  2. Modifier le constructeur d'un controle
    Par piotrr dans le forum NetBeans
    Réponses: 1
    Dernier message: 20/10/2007, 17h08
  3. modifier la propriete d'un controle d'un sous menu
    Par gedechp dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/08/2007, 14h17
  4. [VBA-E] Modifier les propriétés d'un control par une routine
    Par formath dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/03/2007, 10h45
  5. Réponses: 2
    Dernier message: 03/08/2006, 22h00

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