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 :

Acces à un control via une class perso


Sujet :

C#

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2009
    Messages : 114
    Points : 73
    Points
    73
    Par défaut Acces à un control via une class perso
    Bonjour ,

    Étant débutant , j'ai un problème avec un contrôle . J'ai essayé de faire une form principal avec un richtextbox .

    je souhaiterai gérer ce contrôle par une autre class crée par moi même . J'arrive à accéder à une méthode de ma class mais le control n'excite pas dans le context actuel de ma class :

    un bout du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
           console msg = new console();
     
    .....
     
     private void button_Click(object sender, EventArgs e)
            {
              msg.test(); 
            }
     
    }
    ma class perso :

    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
    namespace WindowsFormsApplication1
    {
        public class console 
        {
            private string message ;
     
            public void console_init () 
              {
              }
     
          public void test() 
            {
               richTextBox1.Select(9, 10);
               richTextBox1.SelectedText = "9876543210";
            }
    Surement un problème de déclaration
    Il faut commencer par un bout !!!!


    Merci pour vôtre aide

  2. #2
    Membre confirmé Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Points : 569
    Points
    569
    Par défaut
    Bonjour,

    Je pense que tu peux le passer comme paramètre dans ta méthode test(), genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public void test(RichTextBox richTextBox1, string DisplayedText)
            {
                richTextBox1.Select(9, 10);
                richTextBox1.SelectedText = DisplayedText;
            }
    et dans ta Form

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
           console msg = new console();
     
    .....
     
    private void button_Click(object sender, EventArgs e)
            {
              msg.test(richTextBox1, "9876543210"); 
            }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Redouane me = new Redouane();
    if (me.Connect())
        me.ShareInformations();

  3. #3
    Inactif
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Algérie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 59
    Points : 73
    Points
    73
    Par défaut Encore
    Bonjour,
    Pour débuter je te conseille la méthode de Redouane qui est simple et efficace ... Mais si tu compte utiliser la ressource d'un form (RichTextBox dans ton cas) à partir d'une classe dont l'exécution est dans un thread la cette solution va te générer une exception.

    Ceci parce que les contrôles contenus dans un From s'exécutant sur un thread ne peuvent pas être touchés par un autre thread sauf en utilisant un delegate que tu va passer dans la méthode invoke ....
    enfin je détaille mais c'est une information à connaitre ...

  4. #4
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2009
    Messages : 114
    Points : 73
    Points
    73
    Par défaut
    merci beaucoup

    je tente

  5. #5
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2009
    Messages : 114
    Points : 73
    Points
    73
    Par défaut
    une question ?

    Comment peux t on créer un projet dans plusieurs documents source afin de ne pas mélanger les procédures . Meilleurs lisibilité du prg ...

    Merci

  6. #6
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2009
    Messages : 114
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par Redouane Voir le message
    Bonjour,

    Je pense que tu peux le passer comme paramètre dans ta méthode test(), genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public void test(RichTextBox richTextBox1, string DisplayedText)
            {
     
               string DisplayedText="" ;
               richTextBox1.Select(9, 10);
                richTextBox1.SelectedText = DisplayedText;
            }
    et dans ta Form

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
           console msg = new console();
     
    .....
     
    private void button_Click(object sender, EventArgs e)
            {
              msg.test(richTextBox1, "9876543210"); 
            }

    G un autre soucis ..

    Depuis ma classe console via une autre méthode, je n'arrive pas à accéder à la méthode test .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void test(RichTextBox richTextBox1)
            {
                richTextBox1.Select(9, 10);
                ......
            }
    appel -->> test();


    Erreur 1 Aucune surcharge pour la méthode 'effacement_console' ne prend d'arguments '0'
    Merci par avance

  7. #7
    Membre confirmé Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Points : 569
    Points
    569
    Par défaut
    Erreur 1 Aucune surcharge pour la méthode 'effacement_console' ne prend d'arguments '0'
    ton erreur montre que t'utilise une methode qui s'appelle "effacement_console", avec des arguments (tu passe des paramètres dans cette méthode), mais lors de l'appel de cette dernière tu ne passes aucun paramètre :

    enfin, je crois. vérifier bien tes méthodes et les paramètres passés.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Redouane me = new Redouane();
    if (me.Connect())
        me.ShareInformations();

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Points : 488
    Points
    488
    Par défaut
    Citation Envoyé par parabole33 Voir le message
    une question ?

    Comment peux t on créer un projet dans plusieurs documents source afin de ne pas mélanger les procédures . Meilleurs lisibilité du prg ...

    Merci
    un projet peut contenir autant de fichier et de classes que tu veux, rien ne t'empeche de faire un fichier par classe.

    Je pense que tu as plutot voulu demander :
    comment peut on créer une classe dans plusieurs fichiers source ......

    pour cela il faut utiliser le mot partial, et d'ailleur tu vois que c'est le cas pour les Form, si ta form s'appelle Form1, tu as toujours un fichier Form1.cs et un fichier Form1.Designer.cs
    tu notera que dans ces deux fichiers, tu retrouve la déclaration suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public partial class Form1 : Form

    C'est ce qui permet d'etaler la définition de la classe sur les 2 fichiers, l'un pour le code que tu vas ajouter, l'autre généré automatiquement par le Designer.

    Un puriste te dira surement qu'il ne faut pas faire de classe à tout faire, trop grosse (et il a surement raison). Cela dit si ta classe devient imposante, en effet il me semble judicieux de séparer ta classe sur 2 ou 3 fichiers pour regrouper les choses... Je le fais souvant par exemple si ma classe gere des evenements/ Callback, je place toutca dans un fichier MaClasseEvents

  9. #9
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2009
    Messages : 114
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par Redouane Voir le message
    ton erreur montre que t'utilise une methode qui s'appelle "effacement_console", avec des arguments (tu passe des paramètres dans cette méthode), mais lors de l'appel de cette dernière tu ne passes aucun paramètre :

    enfin, je crois. vérifier bien tes méthodes et les paramètres passés.
    depuis ma class console , je n'arrive pas à exécuter une méthode qui a des arguments dont des contrôles.

    Pour être simple de la Form1 vers console : OK

    De console vers console : non

    Méthode dans la class console.
    test(RichTextBox richTextBox1, string DisplayedText)

    Appel : test( " je suis malade ") ; Erreur .

    Si je supprime RichTextBox richTextBox1 , ca fonctionne .
    C 'est la présence de RichTextBox richTextBox1 qui le perturbe ....

    Merci pour vôtre aide .

  10. #10
    Expert éminent
    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 : 46
    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
    Points : 7 660
    Points
    7 660
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test(RichTextBox richTextBox1, string DisplayedText)
    La méthode prend 2 paramètres et tu n'en passes qu'un seul avec
    Il faudrait faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test(richTextBox1, "je suis malade")
    où richTextBox1 est le contrôle RichTextBox à utiliser.

    Tu devrais relire les bases.
    Pas de questions techniques par MP

  11. #11
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2009
    Messages : 114
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par StormimOn Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test(RichTextBox richTextBox1, string DisplayedText)
    La méthode prend 2 paramètres et tu n'en passes qu'un seul avec
    Il faudrait faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test(richTextBox1, "je suis malade")
    où richTextBox1 est le contrôle RichTextBox à utiliser.

    Tu devrais relire les bases.
    Je me suis mal exprimé !!!

    C pour appeler une méthode comme celle la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void test(RichTextBox richTextBox1) ;


    merci pour votre patience mais il y a un début à tout .

  12. #12
    Expert éminent
    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 : 46
    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
    Points : 7 660
    Points
    7 660
    Par défaut
    Si la méthode à appeler est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void test(RichTextBox richTextBox1)
    et que tu appelles ainsi
    il faut bien voir que "je suis malade" est un objet de type string, pas de type RichTextBox.

    merci pour votre patience mais il y a un début à tout
    Le début c'est de lire des cours / tutoriaux. On ne code pas au petit bonheur la chance
    Pas de questions techniques par MP

  13. #13
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2009
    Messages : 114
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par StormimOn Voir le message
    Si la méthode à appeler est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void test(RichTextBox richTextBox1)
    et que tu appelles ainsi
    il faut bien voir que "je suis malade" est un objet de type string, pas de type RichTextBox.


    Le début c'est de lire des cours / tutoriaux. On ne code pas au petit bonheur la chance
    Donc impossible ?

    Mes 3 livres à 1000 pages sur le bureau ne m'aidant pas plus , j'abandonne définitivement ...
    Je ne trouve pas mon bonheur dans les tutos .
    Ils me serviront à caler les étagères.....

  14. #14
    Expert éminent
    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 : 46
    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
    Points : 7 660
    Points
    7 660
    Par défaut
    Donc impossible ?
    Bien évidemment que non. Mais dans tes 3000 pages de livres, ils ont bien du parler des notions de type, de typage fort, ...

    Si une méthode attend un entier en paramètre, on lui passe un entier et pas une chaîne de caractères par exemple. Si une méthode attend en paramètre un objet de type RichTextBox il faut donc lui passer un objet de type RichTextBox. Ca fait partie des bases.

    Donc
    où richTextBox1 est le contrôle RichTextBox à utiliser.
    Si le prototype de la méthode test est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void test(RichTextBox richTextBox)
    Pas de questions techniques par MP

  15. #15
    Membre régulier

    Profil pro
    Inscrit en
    Juin 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 92
    Points : 115
    Points
    115
    Par défaut
    Salut,

    Je pense que ce que tu cherche à faire, c'est ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public Form1()
    {
    InitializeComponent();
    RichTextBox rtb = newRichTextBox();
    rtb.Text = "je suis malade";
    test(rtb);
    }
    public void test(RichTextBox richTextBox1) { }

    Et avec ça, tu vas même pouvoir afficher ta richTextBox sur ta form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public Form1()
    {
    InitializeComponent();
    RichTextBox rtb = newRichTextBox();
    rtb.Text = "je suis malade";
    test(rtb);
    }
    public void test(RichTextBox richTextBox1) 
    {
    richTextBox1.Size = newSize(100, 20); 
    richTextBox1.Show();
    Controls.Add(richTextBox1);
    }

    Cependant, passer un controle en paramètre, relève dans la plupart des cas, d'une faute de conception. Mais si tu débute à peine, on ne vas pas chipoter la dessus

  16. #16
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2009
    Messages : 114
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par Idrakis Voir le message
    Salut,

    Je pense que ce que tu cherche à faire, c'est ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public Form1()
    {
    InitializeComponent();
    RichTextBox rtb = newRichTextBox();
    rtb.Text = "je suis malade";
    test(rtb);
    }
    public void test(RichTextBox richTextBox1) { }

    Et avec ça, tu vas même pouvoir afficher ta richTextBox sur ta form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public Form1()
    {
    InitializeComponent();
    RichTextBox rtb = newRichTextBox();
    rtb.Text = "je suis malade";
    test(rtb);
    }
    public void test(RichTextBox richTextBox1) 
    {
    richTextBox1.Size = newSize(100, 20); 
    richTextBox1.Show();
    Controls.Add(richTextBox1);
    }

    Cependant, passer un controle en paramètre, relève dans la plupart des cas, d'une faute de conception. Mais si tu débute à peine, on ne vas pas chipoter la dessus
    je tente

    Merci

    G abandonné le principe de plusieurs classes . Je découpe le projet avec Partial Class . C'est lisible et beaucoup plus simple ....

Discussions similaires

  1. Réponses: 4
    Dernier message: 07/08/2014, 00h13
  2. [Débutant] Modification d'un Control via une classe
    Par Owleur dans le forum Windows Forms
    Réponses: 9
    Dernier message: 09/04/2013, 17h29
  3. Acces aux control d'une form depuis une classe
    Par PhilCou dans le forum Windows Forms
    Réponses: 2
    Dernier message: 22/07/2008, 09h59
  4. Réponses: 4
    Dernier message: 06/04/2008, 18h34
  5. Mise à jour d'une controle via une classe.
    Par Andry dans le forum Delphi
    Réponses: 4
    Dernier message: 23/06/2006, 15h00

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