none
Positionnement programmé d'un contrôle texte RRS feed

  • Question

  • Bonjour,
    Dans le cadre du développement d'une appli de bureau en VB.Net (ou C#), je recherche un contrôle texte (RichTextBox par exemple, ou autre) qui assure la visibilité de tel ou tel mot (ou ligne), quelle que soit sa position dans le texte.
    C'est à dire qui offre une possibilité de programmer la (les) ScrollBar pour positionner le texte à l'intérieur de sa fenêtre.

    A défaut, quel serait le principe de fonctionnement d'un tel composant ?
    Merci de vos suggestions.

    Alain

    mardi 28 juin 2016 12:17

Réponses

  • Bonjour,

    Voici un petit exemple avec un

    private void button1_Click(object sender, System.EventArgs e)
    {
     int idx = richTextBox1.Find("\\Desktop");
     if (idx != -1)
     {
       int idLigne = richTextBox1.GetLineFromCharIndex(idx);
       Point ptx = richTextBox1.GetPositionFromCharIndex(idx);
       richTextBox1.SelectionStart = richTextBox1.GetFirstCharIndexFromLine(idLigne);
       richTextBox1.SelectionLength = idx - richTextBox1.SelectionStart;
       richTextBox1.ScrollToCaret();
       richTextBox1.SelectionColor = Color.DarkSeaGreen;
     }

    Richtextbox entièrement visible}
    Richtextbox réduit, toutes les lignes ne sont pas visible,

    l'évènement button1_Click va afficher la portion de texte recherchée.

    Cordialement
    Gérard

    • Proposé comme réponse GP79 mercredi 29 juin 2016 12:02
    • Marqué comme réponse AchLog mercredi 29 juin 2016 12:08
    mercredi 29 juin 2016 09:17

Toutes les réponses

  • Bonjour,

    Voici un petit exemple avec un

    private void button1_Click(object sender, System.EventArgs e)
    {
     int idx = richTextBox1.Find("\\Desktop");
     if (idx != -1)
     {
       int idLigne = richTextBox1.GetLineFromCharIndex(idx);
       Point ptx = richTextBox1.GetPositionFromCharIndex(idx);
       richTextBox1.SelectionStart = richTextBox1.GetFirstCharIndexFromLine(idLigne);
       richTextBox1.SelectionLength = idx - richTextBox1.SelectionStart;
       richTextBox1.ScrollToCaret();
       richTextBox1.SelectionColor = Color.DarkSeaGreen;
     }

    Richtextbox entièrement visible}
    Richtextbox réduit, toutes les lignes ne sont pas visible,

    l'évènement button1_Click va afficher la portion de texte recherchée.

    Cordialement
    Gérard

    • Proposé comme réponse GP79 mercredi 29 juin 2016 12:02
    • Marqué comme réponse AchLog mercredi 29 juin 2016 12:08
    mercredi 29 juin 2016 09:17
  • Bonjour Gérard,

    Génial ! je n'aurais pas su trouver cela tout seul. J'étais passé à coté du ScrollToCaret() !!

    Merci aussi pour les fonctions GetLineFromCharIndex(idx); et GetPositionFromCharIndex(idx);

    Bien cordialement


    Alain

    mercredi 29 juin 2016 12:08