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 :

Modifier un type de composant en 1 seule fois


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Masmeta
    Homme Profil pro
    Ing. R&D informatique industrielle
    Inscrit en
    Mai 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ing. R&D informatique industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 472
    Par défaut Modifier un type de composant en 1 seule fois
    bonjour

    Je débute en C# ( j'ai commencé ce matin), je programme en C++ Builder d'habitude.

    Pour l'instant, je me concentre sur les composants graphiques.
    Malgré les recherches faites, je n'ai pas trouvé ce que je cherche.

    Je recherche à modifier une propriété de plusieurs composants grâce à une petite routine.
    Par exemple au lieu de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    btn1->Visible = true;
    btn2->Visible = true;
    btn3->Visible = true;
    ...
    ...
    btnN->Visible = true;
    En C++, je fais une boucle 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
     
      TBitBtn *Btn; //Creation du composant temporaire
      // Pour tous composants sur la form faire
      for(int i = 0; i < this->ComponentCount; i++)
      {
            //Si le composant est de la classe TBitBtn alors
             if(this->Components[i]->ClassNameIs("TBitBtn"))
            {
                //on le pointe avec le btn temporaire et on modifie la propiétée
                Btn =(TBitBtn *)(this)->Components[i];
                if (!Btn->Visible)
                   Btn->Visible = true;
            }
      }
    Comment peut on faire cela en C#?

    Une autre petite question sur les DLL win32 . J'ai suivi les conseils de la faq
    Mais j'ai des erreurs et ma form s'efface. Où dois je mettre les "static extern int ..."???

    voici le code que j'ai mis :

    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
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
    [ DllImport("DriverBaie.dll") ]
    static extern int WControl(int AdrBase);
    static extern int Clk_Latch(int AdrBase);
    static extern int InitPIA(int AdrBase);
     
    namespace WindowsApplication1
    {
        public partial class Main : Form
        {
            public Main()
            {
                InitializeComponent();
                PnlSechoir.Visible = false;
                PnlOptInt.Visible = false;
     
            }
    }
    Cordialement

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    Citation Envoyé par Masmeta Voir le message
    bonjour

    Je débute en C# ( j'ai commencé ce matin), je programme en C++ Builder d'habitude.

    Pour l'instant, je me concentre sur les composants graphiques.
    Malgré les recherches faites, je n'ai pas trouvé ce que je cherche.

    Je recherche à modifier une propriété de plusieurs composants grâce à une petite routine.

    Comment peut on faire cela en C#?

    ca ressemble à ce que tu fais en c++

    le code vb donnerait à peu près ca (désolé j'suis allergique au c# mais ca ressemble, genre me c'est this)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for each ctr as sytem.windows.forms.control in me.controls
       if typeof ctr is system.windows.forms.button then ctr.visible = true
    next
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre éclairé Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Par défaut
    regarde du coté du foreach ça va t'aider a faire ce que tu veux (ca ressemble au VB de l'exemble ci -dessus

  4. #4
    Membre éclairé Avatar de Masmeta
    Homme Profil pro
    Ing. R&D informatique industrielle
    Inscrit en
    Mai 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ing. R&D informatique industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 472
    Par défaut
    ok merci je m'y plonge

  5. #5
    Membre éclairé Avatar de Masmeta
    Homme Profil pro
    Ing. R&D informatique industrielle
    Inscrit en
    Mai 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ing. R&D informatique industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 472
    Par défaut
    J'ai fait ceci en C# :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                foreach(Control ctrl in this.Controls)
                {
                    if (typeof(ctrl) is Button)
                        ctrl.Visible = false;
                }
    Mais j'ai une erreur sur la ligne
    typeof(ctrl)
    Le message d'erreur m'indique si j'ai bien compris que le type ou le namespace de ctrl n'est pas trouvé.
    Je ne la comprend pas pouvez vous me l'expliquez et m'indiquez comment résoudre ce problème?

    Cordialement

  6. #6
    Candidat au Club
    Inscrit en
    Mars 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 4
    Par défaut
    Bonjour,
    Enlève le typeof.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                foreach(Control ctrl in this.Controls)
                {
                  if (ctrl is Button)
                    ctrl.Visible = false;
                }

  7. #7
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 77
    Par défaut
    Bonjour,
    pour comparer des types, la syntaxe est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(calcul1.GetType() == typeof(Button))
    Pour ton problème de dll, il faut mettre ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [ DllImport("DriverBaie.dll") ]
    static extern int WControl(int AdrBase);
    dans ta classe.

  8. #8
    Membre éclairé Avatar de Masmeta
    Homme Profil pro
    Ing. R&D informatique industrielle
    Inscrit en
    Mai 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ing. R&D informatique industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 472
    Par défaut
    Je te remercie Clochette à force de chercher, j'avais remarqué que le code était mal placé. J'ai réussi à l'implémenter correctement je pense, mais j'ai un autre problème. J'ai ouvert un nouveau post pour être plus clair

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Par défaut
    Citation Envoyé par clochettes Voir le message
    Bonjour,
    pour comparer des types, la syntaxe est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(calcul1.GetType() == typeof(Button))
    Salut,

    ca marche aussi mais c'est plus restrictif. .GetType == typeof() ne te renverra true que si les types sont les memes, ce qui dans le cas d'heritage peut etre embetant, le is t"indique juste si l'objet peut etre converti, ce qui marchera dans le cas de classes derivés.

  10. #10
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    c'est marrant, en vb ca doit etre l'inverse, enfin le typeof marche pour l'héritage, et le is je crois pas ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. modifier le type d'un champs
    Par xopos dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 16/12/2008, 15h09
  2. Modifier le type d'un champ
    Par hannii dans le forum Access
    Réponses: 8
    Dernier message: 01/09/2006, 15h51
  3. [modifier un type]
    Par viny dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 11/03/2005, 14h34
  4. 2 types de lien sur une seule page
    Par MiJack dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 06/10/2004, 09h02
  5. Modifier un type défini par l'utilisateur
    Par soazig dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/08/2004, 12h47

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