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

VB.NET Discussion :

vb.net - TextBox personnalisé


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 306
    Par défaut vb.net - TextBox personnalisé
    Bonjour,

    J'ai fait un composant TextBox qui n'a comme fonction que de filtrer les caractères :

    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
    Public Class MyTxtBx
     
        Public Shared boolchar As Boolean
     
        ' Détection Caractères Spéciaux
        Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
            If (e.KeyChar < ChrW(65) Or (e.KeyChar > ChrW(90) And e.KeyChar < ChrW(97)) Or e.KeyChar > ChrW(122)) _
        And e.KeyChar <> ChrW(8) And e.KeyChar <> ChrW(32) Then boolchar = True
        End Sub
     
        ' Suppression Caractères Spéciaux
        Private Sub NameTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
            If boolchar Then
                boolchar = False
                TextBox1.Text = Mid(TextBox1.Text, 1, Len(TextBox1.Text) - 1)
                TextBox1.SelectionStart = TextBox1.Text.Length
            End If
        End Sub
    End Class

    En parallèle de ce mécanisme générique, je voudrais qu'une TextBox "Ploum" créée avec ce composant ait également un événement "TextChanged" qui lui soit propre (et qui ne s'oppose pas au premier TextChanges générique) : activer un Bouton si TextBox.Text<>"" par exemple.

    Le problème c'est qu'il y a conflit entre le premier et le second gestionnaire... l'un prend l'ascendant sur l'autre et c'est assez variable...


    J'espère avoir été clair.
    Merci de votre aide

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 200
    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 200
    Par défaut
    textchanged n'est déclenché que quand le texte change !

    je ne vois en quoi ca t'embete de mettre un nom différent pour ton évènement perso

    mais bon si tu veux quand même qu'il ai le meme nom et que ca soit que toi qui le déclenche, tu overrides OnTextChanged et tu fais ton raiseevent sans appeler la sub de mybase
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 306
    Par défaut
    Bonjour et merci pour ta réponse.
    Je ne sais pas si je me suis fais comprendre... Je reformule.

    Le composant personnalisé MyTxtBx que j'ai créé possède comme tu l'as vu un événement TextChanged générique. Ainsi tous les TextBoxes que je crée à partir de ce composant filtrent les caractères.
    Jusque là, ok.

    Mais un des textBox créé à partir de ce composant doit utiliser, en plus de cet événement TextChanged commun, un événement TextChanged qui lui est propre... qu'il ne doit pas partager avec les autres TextBoxes.

    Comment dois-je faire ?
    Je n'ai aucun a priori sur la solution... celle que j'ai tentée ne fonctionne pas...

    Merci beaucoup.

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 200
    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 200
    Par défaut
    dans le code que tu nous mets, je ne vois ni inherits, ni event


    si tu veux que certains textbox fonctionnent différement, il faut rajouter une propriété qui permet de choisir le type de fonctionnement, et au moment de lancer l'evenement, tu testes la valeur de cette propriété
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 306
    Par défaut
    dans le code que tu nous mets, je ne vois ni inherits, ni event
    Je mets ca dans le code auto généré :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
    Partial Class MyTxtBx
        Inherits System.Windows.Forms.TextBox
    
        'UserControl overrides dispose to clean up the component list.
        <System.Diagnostics.DebuggerNonUserCode()> _
        Protected Overrides Sub Dispose(ByVal disposing As Boolean)
    ...
    ...
    Ce qui génère :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
    à la fin du code auto généré.

    si tu veux que certains textbox fonctionnent différement, il faut rajouter une propriété qui permet de choisir le type de fonctionnement, et au moment de lancer l'evenement, tu testes la valeur de cette propriété
    Le problème c'est que dans le code de la class MyTxtBx, lorsque j'intercepte l'événement TextChanged d'une TextBox nommée "Lambda" le sender est "TextBox1"... le nom du composant utilisé pour dériver MON composant.

    Si dans la form où j'utilise une instance de mon composant, je fais un gestionnaire d'événement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Lambda_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Lambda.TextChanged
     
    ...
    ...
    End Sub
    Cet événement n'est jamais levé...


  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 200
    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 200
    Par défaut
    dans le code que tu mets, il y a des choses qui viennent de usercontrol, alors que tu hérites de textbox

    donc y a un truc qui cloche dans ce que tu as fais

    si tu hérite de textbox, i y a pas de partial class, pas de dispose ...
    alors qu'en héritant de usercontrol, en effet, le textbox qui est posé sur le usercontrol garde son nom, qui n'a rien à voir avec le nom du textbox qui est sur lui

    pour faire un textbox modifié il n'y a pas besoin de faire un usercontrol
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. [VB.net] TextBox dans Repeater
    Par TekP@f dans le forum ASP.NET
    Réponses: 2
    Dernier message: 06/05/2005, 13h38
  2. Réponses: 6
    Dernier message: 02/05/2005, 14h00
  3. [vb.net][textbox] Avoir un value field et un display field
    Par graphicsxp dans le forum Windows Forms
    Réponses: 2
    Dernier message: 27/04/2005, 17h59
  4. [VB.NET] Textbox -> seulement des chiffres sans API?
    Par Pleymo dans le forum Windows Forms
    Réponses: 10
    Dernier message: 25/04/2005, 14h00
  5. [VB.NET] Contrôle personnalisé dans une dll personnalisée
    Par c3b12 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 15/10/2004, 07h56

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