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 :

Comment créer une fonction qui attend un événement souris ?


Sujet :

Windows Forms

  1. #1
    Inscrit
    Profil pro
    Inscrit en
    Février 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2008
    Messages : 191
    Points : 199
    Points
    199
    Par défaut Comment créer une fonction qui attend un événement souris ?
    Bonjour,
    Je veux réaliser une fonction qui attend un événement souris (click) si l'événement click est déclenché alors elle récupère le contrôle pointé par la souris.

    avez vous une idée?

    Merci de votre aide

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    327
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 327
    Points : 402
    Points
    402
    Par défaut
    Bonjour,
    A quel niveau ce situe ton problème ?

    Tu as un evenement click qui as comme parametre les coordonnées de ton click.

    Apres tu as juste a retrouver quel element ce trouve a cette endroit.

    A bientôt

  3. #3
    Inscrit
    Profil pro
    Inscrit en
    Février 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2008
    Messages : 191
    Points : 199
    Points
    199
    Par défaut
    Bonjour wakan,
    J'ai ma fonction qui relie deux contrôles par une ligne
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    DessinerLigne(Control cnt1, Control cnt2)
    Si l'utilisateur veut créer une ligne entre deux contrôles (visible) il clic tout simplement sur le premier contrôle puis sur le deuxième.

    j'ai implémenté une solution qui fonctionne mais je pense pas qu'elle est pratique
    J'ai déclaré 3 variables globales
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    private Control MonPremierControl
    private Control MonDeuxiemeControl
    bool dessiner =false;

    et dans événement click

    je teste la variable dessiner :
    dessiner =faux: il s'agit de premier clic alors je récupère le contrôle cible et je le sauvegarde dans la variable MonPremierControl après je mets dessiner à false

    dessiner =vrais: il s'agit de deuxième clic alors j'appelle la fonction DessinerLigne(MonPremierControl,MonDeuxiemeControl) et je mets la variable dessiner à false (cette fonction marche bien).

    Mais maintenant je me demande s'il y a une possibilité de changer ma fonction de telle manière j'utilise une méthode qui récupère le contrôle qui déclenche un événement click;
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DessinerLigne(Get_Control(),Get_Control());//appelle de la fonction
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    private Control Get_Control() //le corps de la fonction 
    {
    //rester en écoute jusqu'à un événement click sera détecté
    //récupérer l'objet
    }

    Remarque:
    si je dis n'importe quoi parc que c'est mon 15ém jour et 3 heurs avec C#

    de me corriger le chemin si je suis OUT

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 198
    Points : 106
    Points
    106
    Par défaut
    Je ne suis pas sur de comprendre ce que tu veux, tu veux un évènement click qui appelle une fonction avec tes deux derniers contrôles cliqué en paramètre? Ca me semble pas possible, ou plus longue à implémenter que ta solution actuelle.

    La suite ne concercne peut-être pas ce que tu demandes mais je pense que tu pourrais te passer du booléen dessiner en regardant MonPremierControl

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if ( MonPremierControl == null )
         MonPremierControl = control ;
    else
    {
         DessinerLigne(...);
         MonPremierControl = null;
    }

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 59
    Points : 44
    Points
    44
    Par défaut
    salut,

    tu peux toujours créer des fonctions qui catch le clic de ta souris sur chaque controle "clicable"
    ensuite tu détermines dans des variables le nom des controles et leurs position

  6. #6
    Membre du Club

    Inscrit en
    Mars 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 63
    Points : 65
    Points
    65
    Par défaut
    Salut,

    J'essaie de deviner ce que tu veux faire en vrai, je suppose que c'est une fenetre pour definir un genre de mapping. Bref là où je veux en venir, c'est que tes controles sont tres probablement les memes (des textbox peut etre ?)

    Si c'est le cas, je te propose une implementation de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    for (int i = 1; i <= nbControls; i++)
    {
           TextBox tb = new TextBox();
           tb.Name = "MaTextBox" + i;
           tb.Location = new Point(la_ou_tu_veux);
           ///TODO: rajouter des propriétés aux TextBox...
           tb.Click += new EventHandler(tb_Click);
    }
    void tb_Click(object sender, EventArgs e)
    {
           string nomControlClicke = ((TextBox)sender).Name;
    }
    Bon courage

    Titip

Discussions similaires

  1. [Google Maps] comment créer une fonction javascript qui change la position courante
    Par dearraed dans le forum APIs Google
    Réponses: 1
    Dernier message: 25/05/2013, 20h28
  2. Réponses: 2
    Dernier message: 22/10/2007, 17h50
  3. Comment créer une fonction qui retourne un tableau?
    Par Dereck07 dans le forum Delphi
    Réponses: 4
    Dernier message: 26/04/2007, 13h16
  4. Réponses: 15
    Dernier message: 15/12/2005, 14h36
  5. [VB6] Comment faire une fonction qui renvoie 2 résultats
    Par tazarine dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 15/01/2004, 00h13

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