locked
SplitContainer et RichTextBox RRS feed

  • Question

  • hello
    voila j'ai un petit souci, j'ai un SplitContainer et un RichTextBox et je voudrai savoir si il est possible que mon SplitContainer se redimensionne tout seul en fonction du texte qui est dans mon RichTextBox si il n'y a qu'une ligne mon splitcontainer est au minimum si il y a deux lignes il est de manière a ce que les deux lignes soient lisible etc etc
    peut être est ce possible sans utilisé de splitcontainer ? j'ai le même souci avec un Label
    lundi 3 novembre 2008 19:45

Réponses

  • Bonjour,

     

    C'est possible uniquement si une ligne correspond à du texte + un retour à la ligne manuel, pour cela traitez l'événement TextChanged :

    • Le nombre de lignes peut être connu via la propriété RichTextBox.Lines.Length, a vous de redimmensionner le contrôle en conséquence...

    Cordialement

    jeudi 6 novembre 2008 06:18
  • Bonjour,

     

    Il y a une solution de type "bricolage" qui consiste à créer un RichTextBox invisible avec une hauteur relativement grande (en gros la taille maxi que devrait prendre votre RichTextBox "réel"). Ce RichTextBox doit avoir les mêmes propriétés de retour à la ligne et surtout la même largeur que le RichTextBox réel.

     

    Vous y insérer le texte de dedans et vous utilisez la fonction : GetPositionFromCharIndex() comme ceci :

     

    Code Snippet

    Point p;

    p = rtb.GetPositionFromCharIndex(rtb.TextLength);

    //p.Y contient maintenant l'ordonnée (en pixel) du dernier caractère.

    rtbARedimensionner = p.Y + //La hauteur de la police

     

     

    Cordialement

     

    lundi 10 novembre 2008 18:53
  • Bonsoir,

     

    La méthode TextRenderer.MeasureText() devrait faire votre bonheur :

    http://msdn.microsoft.com/en-us/library/y4xdbe66.aspx

     

    Cordialement

    lundi 10 novembre 2008 19:06
  • Bonsoir,

     

    Pour les labels, vu que le texte qui se trouve à l'intérieur est toujours de la même police, vous pouvez utiliser uniquement la méthode TextRender.MeasureText() comme expliqué dans mon précédent post.

     

    Cordialement

     

    lundi 10 novembre 2008 20:57

Toutes les réponses

  • Bonjour,

     

    C'est possible uniquement si une ligne correspond à du texte + un retour à la ligne manuel, pour cela traitez l'événement TextChanged :

    • Le nombre de lignes peut être connu via la propriété RichTextBox.Lines.Length, a vous de redimmensionner le contrôle en conséquence...

    Cordialement

    jeudi 6 novembre 2008 06:18
  • non il n'y aura pas de \r\n il n'y aura qu'une seule ligne qui sera en WordWrap

    samedi 8 novembre 2008 01:07
  • Bonjour,

     

    Il y a une solution de type "bricolage" qui consiste à créer un RichTextBox invisible avec une hauteur relativement grande (en gros la taille maxi que devrait prendre votre RichTextBox "réel"). Ce RichTextBox doit avoir les mêmes propriétés de retour à la ligne et surtout la même largeur que le RichTextBox réel.

     

    Vous y insérer le texte de dedans et vous utilisez la fonction : GetPositionFromCharIndex() comme ceci :

     

    Code Snippet

    Point p;

    p = rtb.GetPositionFromCharIndex(rtb.TextLength);

    //p.Y contient maintenant l'ordonnée (en pixel) du dernier caractère.

    rtbARedimensionner = p.Y + //La hauteur de la police

     

     

    Cordialement

     

    lundi 10 novembre 2008 18:53
  • comment je trouve la hauteur de la police ?
    lundi 10 novembre 2008 19:00
  • Bonsoir,

     

    La méthode TextRenderer.MeasureText() devrait faire votre bonheur :

    http://msdn.microsoft.com/en-us/library/y4xdbe66.aspx

     

    Cordialement

    lundi 10 novembre 2008 19:06
  • Merci beaucoup pour vos réponses
    lundi 10 novembre 2008 19:10
  • désolé de vous dérangez encore mais j'ai une dernière question pour un label c'est la même manip ?
    lundi 10 novembre 2008 20:26
  • Bonsoir,

     

    Pour les labels, vu que le texte qui se trouve à l'intérieur est toujours de la même police, vous pouvez utiliser uniquement la méthode TextRender.MeasureText() comme expliqué dans mon précédent post.

     

    Cordialement

     

    lundi 10 novembre 2008 20:57