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

Dotnet Discussion :

usercontrol et evenements


Sujet :

Dotnet

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Par défaut usercontrol et evenements
    Bonjour,

    je suis nouveau dans le développement winform et je rencontre un petit soucis suite à mon futur developpement.

    J'ai lu pleins de choses mais cela ne m'aide pas car pas très bien expliqué.
    Je vous explique mon souahite:

    j'ai un usercontrol que l'on va nommé "UC1" qui contient un textbox "txtUC1" et un bouton "btnUC1".

    De l'autre côté, j'ai ma form qui "form1" qui contient un textbox "txtForm1" et un bouton "btnForm1".

    Je souhaite simplement interagir entre ma form et mon usercontrol. C'est à dire que si je clic sur le bouton btnUC1 je souhaiterais récupérer la valeur de txtUC1 que j'aimerais copier dans txtForm1.
    Faire aussi inversememnt.

    Je pense que vous allez trouver ça vraiment basique mais j'ai des soucis au niveau de la déclaration de l'evenement et je m'y perds avec toutes les docs sur le net.

    MErci d'avance pour votre aide et vos explications

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    Bonjour,
    sur ce site tu pourras trouver des tutos sur les événements:
    http://freddyboy.developpez.com/dotnet/articles/events/
    et les délégués :
    http://fguillot.developpez.com/cours...egates-csharp/

    Dans ton cas il faudra créer dans ton usercontrol un événement qui renvoie une string (le texte de ta textbox), que tu déclenchera au click sur le boutton et dans ta form tu t'abonnes à cet événement pour récupérer la string passer en paramètre.

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Par défaut
    voici mon code est rien ne se passe:

    Usercontrol
    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
     
     
     public partial class UserControl1 : UserControl
        {
     
     
            public event EventHandler OnBouton1Click;
     
            public UserControl1()
            {
                InitializeComponent();
     
            }
     
            protected void button1_Click(object sender, EventArgs e)
            {
                if (OnBouton1Click != null)
                    OnBouton1Click(sender, e);
            }
     
            public string getTextBox()
            {
                return textBox1.Text;
            }
     
            public void SetTextBox(string txt)
            {
                textBox1.Text = txt;
            }
     
     
        }
    voici le code de ma 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
     
    public partial class Form1 : Form
        {
            UserControl1 uc = new UserControl1();
     
            public Form1()
            {
                InitializeComponent();
     
                uc.OnBouton1Click += new EventHandler(UserControl1_OnBouton1Click);
     
     
            }
     
     
            void UserControl1_OnBouton1Click(object sender, EventArgs e)
            {
                MessageBox.Show("test click ok");
            }
     
     
     
     
        }
    Avec ce code, je n'arrive pas à recupérer le click sur le usercontrol dans ma form. De plus j'aimerais copier la valeur de mon textbox du usercontrol pour l'affecter à un textbox de ma form.

  4. #4
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    Comment as tu inclus ton usercontrol dans ta form:
    par le designer ou toi même en code ?
    Parce que ton UserControl1 uc = new UserControl1(); instancie ton usercontrol mais ne permet pas de l'afficher.

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Par défaut
    par le designer. je l'ai fait glisser.

    Je crois comprendre. Il faut que j'utilise this.usercontrol.....

    Est ce que mes autres déclarations sont ok? Dans le usercontrol et dans la form.
    De plus y a t il un autre moyen de les déclarer que celle ci?

  6. #6
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    oui faut que tu fasses comme tu as dit parce que là tu récupères pas l'événement de ton usercontrol que ta mis dans ta form.
    Pour ton code il est correct, mais tu peux le simplifier, tu fais un simple get set pour le texte de ta textbox donc au lieu de passer par des méthodes tu peux utiliser une propriété.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            public string TextBoxText
            {
                get
                {
                    return textBox1.Text;
                }
                set
                {
                    textBox1.Text = value;
                }
            }
    après tu peux au choix utiliser cette solution pour récupérer et setter la valeur de ta textbox mais tu peux utiliser aussi une autre solution pour remonter la valeur de ta textbox en créant ton propre événement personnalisé:
    -soit tu crées une nouvelle classe héritant d'EventArgs
    -soit tu crées un délégué qui prend en paramètre une string.

Discussions similaires

  1. Intercepter l'evenement MouseMove de la feuille dans un UserControl
    Par avigeilpro dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 27/12/2007, 23h12
  2. Intéractions et Evenements entre UserControl
    Par loic_86 dans le forum C#
    Réponses: 1
    Dernier message: 23/05/2007, 18h06
  3. Réponses: 5
    Dernier message: 27/07/2006, 13h35
  4. [C#][2.0]Declencher un evenement d'un usercontrol
    Par chnew dans le forum Windows Forms
    Réponses: 3
    Dernier message: 13/02/2006, 16h42
  5. [VB6] [UserControl] Évènements personnalisés
    Par Frankywinky dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 27/05/2003, 17h56

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