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 Presentation Foundation Discussion :

Création de textbox par code + AddHandler


Sujet :

Windows Presentation Foundation

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 582
    Par défaut Création de textbox par code + AddHandler
    Bonjour,
    j'ai créé un UserControl contenant 2 textboxes : Textbox1 et Textbox2.
    Souhaitant utiliser le Drag 'n Drop, l'évènement MouseDown est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub TextBlock1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Handles TextBlock1.MouseDown, TextBlock2.MouseDown
     
            Dim tx As TextBox = CType(sender, TextBox)
            tx.SelectAll()
            DragDrop.DoDragDrop(tx, tx.Text, DragDropEffects.Move)
     
    End Sub
    Tout fonctionne bien.
    Maintenant, lors de l'utilisation de mon UserControl, je rajoute par code un nombre variable de textboxes. J'aimerais abonner leur évènement MouseDown à celui de Textbox1. J'ai essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim txtJoueur As New TextBox
    txtJoueur.AllowDrop = True
    AddHandler txtJoueur.MouseDownEvent, AddressOf (TextBlock1_MouseDown)
    Mais là, il me met une erreur sur l'instruction en rouge :
    Argument not specified for parameter 'e' of 'Private Sub TextBlock1_MouseDown(sender As Object, e As System.Windows.Input.MouseButtonEventArgs)'
    J'ai pourtant suivi un exemple dans la MSDN qui fait de même...
    Comment résoudre le problème ?

  2. #2
    Membre émérite Avatar de yonpo
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 617
    Par défaut
    Salut,

    Déclare ton événement dans le xaml :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <TextBox MouseDown="TextBox_MouseDown"/>

    puis :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    private void TextBox_MouseDown(object sender, MouseButtonEventArgs e)
    {
    //Evenement du textbox ci dessus
    }
    ....
    TextBox txtJoueur = new TextBox();
    txtJoueur.AllowDrop = true;
    txtJoueur.MouseDown += new MouseButtonEventHandler(TextBox_MouseDown); //Abonne à l'événement ci dessus

  3. #3
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Créer des contrôles en WPF relève bien souvent d'une mauvaise pratique héritée de Winform.
    Si création en boucle il y'a c'est qu'il y'a une collection donc ca peut se faire via une ItemsControl ou Listbox

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 582
    Par défaut
    Je précise que je suis en vb. Alors j'ai tapé le code de yonpo et il me souligne (en rouge ici) :
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    txtJoueur.MouseDown += new MouseButtonEventHandler(TextBox_MouseDown)
    Pour la 1ère erreur, il me met:
    Public event MouseDown is an event and cannot be called directly.
    Et pour la seconde :
    Delegate 'Windows.Input.MouseButtonEventHandler' requires an 'AdressOf' expression or lambda expression as the only argument to its constructor
    Pour répondre à Nathanael, mon UserControl doit créer un tableau d'affichage particulier qui requiert la création par code de ses différents éléments (leur nombre, disposition dépendant de paramètres fournis au constructeur). Voilà.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 582
    Par défaut
    Bon, je viens de me rendre que je me suis pris la tête pour rien !
    Le drag and drop est un comportement implémenté par défaut pour les textbox (juste en mettant la propriété AllowDrop à true et rien d'autre) ! J'ai viré tout le code lié au Textbox_MouseDown, et ça fonctionne, pour tous les textbox (ceux créés dans le xaml et ceux créés par code).
    Merci tout de même de vous être penchés sur le problème.

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

Discussions similaires

  1. Ajouter des TextBox par code sur un Form
    Par ClubberGuy dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 05/05/2011, 16h47
  2. [SQL 2005]création d'instance par code sql
    Par m-mas dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 25/10/2007, 22h55
  3. Création de table par code
    Par lerico dans le forum Access
    Réponses: 5
    Dernier message: 18/07/2006, 15h09
  4. [VBA-E] Sélection d'un textbox par le code
    Par Ania dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/06/2006, 16h58
  5. [VBA-E]ajouter un textbox sur un formulaire par code?
    Par DonKnacki dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 22/03/2006, 10h33

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