none
RichTextBoxの高さを自動的に調節する方法 RRS feed

  • 質問

  • RichTextBoxにはサイズを自動的に調節する機能が用意されていません。そこで、次のようなコードを作りましたが、うまく合いません。何が違っているのでしょうか?他に良い方法がありますか?教えてください。

    form1にRichTextBox1を貼付け、fillでdockしました。RichTextBox1が編集された時に、フォントの高さと行数を元に必要な高さを計算し、form1の高さを変えます。form1の

    Private Sub RichTextBox1_ContentsResized(ByVal sender As Object, ByVal e As System.Windows.Forms.ContentsResizedEventArgs) Handles RichTextBox1.ContentsResized

    Me.Height =  30 + (currentMemo.Font.Height) * (currentMemo.GetLineFromCharIndex(currentMemo.TextLength) + 1)
    2006年10月29日 13:04

すべての返信

  • 自動的に調節するとはどのように調節しようと思っていますか。

      1. 縦スクロールバーが表示されないように高さを調整。
      2. 横スクロールバーが表示されないように幅を調整。

    また、ある程度 RichTextBox に制約を決めておけば調整する処理も楽になると思います。

      ・フォント名を統一する
      ・フォントサイズを統一する
      ・フォントスタイルを統一する

    など・・・

    でもここまでしてしまえば TextBox で十分ですね。

    2006年10月31日 13:32
  • ありがとうございます。

    RichTextBox内の文章が全部表示されるように、縦方向にサイズを増減する方法を探しています。画面の縦幅を越えないように、上限を設けるつもりです。結果的に、スクロールバーは縦も横も表示されないことになります。

    TextBoxでも構いません。上手い方法があったら、教えてください。

    2006年11月1日 11:35
  • エディタ系のコントロールで AutoSize のような動きをされるとちょっと違和感がありますが、
    一応高さだけに限ってはできそうな感じです。

    最小のサイズと最大のサイズを決めておけば何とかなると思います。

    ただし、フォントは全て統一してある必要があります。
    横スクロールは一切考慮しておりません。
    リッチな表現はできませんのでご了承ください。


    ' 一行の高さ
    Private fontHeight As Single
     
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        ' 一行の高さを取得
        Me.RichTextBox1.Text = "1" & ControlChars.NewLine & "2"
        Me.fontHeight = Me.RichTextBox1.GetPositionFromCharIndex(Me.RichTextBox1.GetFirstCharIndexFromLine(1)).Y - Me.RichTextBox1.GetPositionFromCharIndex(Me.RichTextBox1.GetFirstCharIndexFromLine(0)).Y
        Me.RichTextBox1.Text = String.Empty
    End Sub
     
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        ' RichTextBox の高さを自動調整
        Dim line As Integer = Me.RichTextBox1.GetLineFromCharIndex(Me.RichTextBox1.TextLength) + 1
        Me.RichTextBox1.Height = CInt(Me.fontHeight * line)
    End Sub

     

     

    2006年11月1日 13:04
  • ダッチさん

    できなそうなので、がっかりしていたのですが、ダミーの文字を入れて距離を計測するというのは参考になりました。

    尚、fontHeightはshadowsとして設定するそうです。

    ありがとうございました。また教えてください。

    2006年11月3日 5:03