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 :

Mutualiser les actions sur plusieurs Richtextbox


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 261
    Par défaut Mutualiser les actions sur plusieurs Richtextbox
    Bonjour à tous,

    Je vous sollicite à nouveau pour avoir un petit coup de pouce sur la mutualisation des actions sur des Richtextbox ...

    1) Pour restructurer mes RichTextBox, je fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub RichTextBox59_ContentResized(sender As Object, e As ContentsResizedEventArgs) Handles RichTextBox59.ContentsResized
    RichTextBox59.Height = e.NewRectangle.Height + 12
    End Sub
    Au lieu de réécrire cela pour X RichtextBox, il y a t-il un moyen de le faire appliquer à une liste précise de RichTextBox ?

    2) Pour chaque RichTextBox, j'ai ajouté un menu contextuel pour pouvoir changer la taille caractère, couleur, etc ... d'une partie du texte sélectionnée. Pour l'instant j'ajoute le menu ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RichTextBox59.ContextMenuStrip = ContextMenuStripFormat
    Là aussi je cherche la méthode pour l'appliquer à mes différentes RichTextBox ...

    3) Mon menu contextuel permet d'ouvrir la fenêtre "FontDialog" ou "ColorDialog" . Là aussi pour l'instant c'est écrit en "dur" pour un seul RichTextBox du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RichTextBox59.SelectionFont = ....
    RichTextBox59.SelectionColor = ....
    Là aussi je cherche le moyen de remplacer RichTextBox59 par un mot générique qui correspond au RichTextBox ou j'ai sélectionné le texte

    4) Un dernier soucis est lorsque le FontDialog s'ouvre ou ColorDialog sur un texte sélectionné, il ne tient pas compte du format actuel : C'est à dire que si mon texte était en gras et en rouge, lorsque le FontDialog s'ouvre, il s'ouvre avec des paramètres par défaut ...

    Voici le code concernant l'ouverture du menu contextuel :
    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
    33
    34
    35
    36
    37
    38
    39
    40
    Public Sub ToolStripItemsClicked_Click(sender As Object, e As EventArgs)
            Dim RTBSelStart As Integer = 0
            If DirectCast(sender, ToolStripMenuItem).Name = "ToolStripMenuItemFormat" Then
                Using FD As New FontDialog
                    With FD
                        .AllowScriptChange = True
                        .FixedPitchOnly = False
                        .ShowColor = True
                        .ShowEffects = True
                        .AllowVectorFonts = True
                        .AllowVerticalFonts = True
                    End With
                    If RichTextBox59.SelectionLength > 0 Then
                        RTBSelStart = RichTextBox59.SelectionStart
                        If FD.ShowDialog = Windows.Forms.DialogResult.OK Then
                            RichTextBox59.SelectionFont = FD.Font
                            RichTextBox59.SelectionColor = FD.Color
                            RichTextBox59.SelectionStart = RTBSelStart
                            RichTextBox59.SelectionLength = 0
                        End If
                    End If
                End Using
            ElseIf DirectCast(sender, ToolStripMenuItem).Name = "ToolStripMenuItemFond" Then
                Using CD As New ColorDialog
                    With CD
                        .AllowFullOpen = True
                        .AnyColor = True
                        .FullOpen = True
                    End With
                    If RichTextBox59.SelectionLength > 0 Then
                        RTBSelStart = RichTextBox59.SelectionStart
                        If CD.ShowDialog = Windows.Forms.DialogResult.OK Then
                            RichTextBox59.SelectionBackColor = CD.Color
                            RichTextBox59.SelectionStart = RTBSelStart
                            RichTextBox59.SelectionLength = 0
                        End If
                    End If
                End Using
            End If
        End Sub
    Merci pour vos futures suggestions ...

  2. #2
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    1) [Je ne sais pas si tes RichTextBox sont créés dynamiquement ........ mais si ce n'est pas le cas alors procède comme ceci :]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private Sub RichTextBox59_ContentResized(sender As Object, e As ContentsResizedEventArgs) Handles RichTextBox59.ContentsResized,RichTextBox60.ContentsResized,RichTextBox61.ContentsResized,RichTextBox62.ContentsResized
        Dim rtb as RichTextBox = TryCast(sender,RichTextBox)
            rtb.Height = e.NewRectangle.Height + 12
        End Sub
    Le but étant de caster le Sender (ou le contrôle appelant).
    J'espère juste que tu n'as pas vraiment ajouter 59 RichTextBox ????

    ++

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 261
    Par défaut
    Salut Wallace,

    En fait il y en a une trentaine intégré dans un TableLayoutPanel ....
    J'avais essayé avec AllRichTextBox mais çà marche pas ....
    Je me suis dit pour le traitement dans le menu contextuel, de récupérer le RichTextBox ou le texte est sélectionné et de l'utiliser comme une variable ...
    Ou peut-être créer une liste ?

    Re,

    Sinon comment on fait pour récupérer le nom exact du RichTextBox ou a été fait un choix avec le menu contextuel ?
    Car pour le traitement avec le menu contextuel, je pourrais remplacer RichTextBox59 par une variable ...
    Apparrement je ne peux pas utiliser ici ActiveControl.Name ...


    Edit :
    çà marche ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim rtb as RichTextBox = DirectCast(ContextMenuStripFormat.SourceControl, RichTextBox)
    Pour le point 4, c'est aussi réglé .

    Reste encore à trouver une solution pour affecter le même menu à plusieurs RichTextBox

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par IL-MAFIOSO Voir le message
    Salut Wallace,

    En fait il y en a une trentaine intégré dans un TableLayoutPanel ....
    Moi, je pense que c'est complètement dément et que tout utilisateur obligé de nourrir 30 RichTextBoxes, va juste vouloir te lyncher, t'écarteler et t'envoyer sur le bûcher.

    Cela m'inspire que tu penses plus au confort des concepteurs, qu'au confort de tes utilisateurs, ou à l'ergonomie, le mot à la mode. Encore que l'ergonomie c'est plus que le simple confort.

    Personnellement je regarderais un TabPage, ou plusieurs forms, ou une Application MDI qui permettrait d'utiliser des fenêtres dédiées.

    Mais bon. je ne ferai heureusement pas partie de tes victimes.

  5. #5
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    Débile comme dit par clementmarcotte,mais faisable !!!

    Je me suis dit pour le traitement dans le menu contextuel, de récupérer le RichTextBox ou le texte est sélectionné et de l'utiliser comme une variable ...
    Ou peut-être créer une liste ?
    Tu obtient le RichTextBox en cours (pointé par le ToolStripMenuItem) simplement comme suit (pas besoin de liste !!!).....
    exemple code .vb pour setter le font du RichTextBox:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
     Private Sub FontToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FontToolStripMenuItem.Click
            Dim c As ContextMenuStrip = FontToolStripMenuItem.Owner 'recupere le ContextMenuStrip proprietaire 
            Dim rtb As RichTextBox = CType(c.SourceControl, RichTextBox) 'recupere le control RTB pointé
            If rtb Is Nothing Then Return ' autre que RichTextBox ne rien faire 
     
            'ton code applicatif
     
        End Sub
    bon code....

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 261
    Par défaut
    Bonjour à tous et bonne année 2017 avant tout

    clementmarcotte,
    En fait, l'utilisateur doit pouvoir voir tous les RichTextBox en même temps, un peu comme un tableau de bord ...
    Je suis parti sur des RichTextBox car il a besoin certaines fois de faire de la mise en forme (Gras, couleur, etc ...) sur tout ou une partie du texte.
    J'ai mis ces RichTextBox dans un TableLayoutPanel pour garder une certaine structure.

    Visuellement, çà ressemble à un tableau ou l'utilisateur remplit la case qu'il doit remplir si nécessaire. Je n'ai pas vraiment trouvé mieux

    MABROUKI,
    Merci pour la suggestion. Une piste pour appliquer le menu contextuel aux RichTextBox insérés dans le TableLayoutPanel ? car pour le moment je le rajoute individuellement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RichTextBox1.ContextMenuStrip = ContextMenuStripFormat
    RichTextBox2.ContextMenuStrip = ContextMenuStripFormat
    ...

Discussions similaires

  1. Comment récupéré les données sur plusieurs fenêtres ?
    Par bon4000 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 17/09/2007, 17h58
  2. Réponses: 2
    Dernier message: 11/01/2007, 12h56
  3. [MySQL] Checkboxes : récupérer les informations sur plusieurs lignes
    Par eric41 dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 12/06/2006, 12h41
  4. [JScrollBar] Récupéré les actions sur les scrollbars
    Par lilou77 dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 20/10/2005, 10h36
  5. recuperer les id sur plusieurs champs
    Par matN59 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/03/2004, 10h23

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