none
1行だけのDataGridViewに長いテキストを入力した場合の縦スクロールの方法 RRS feed

  • 質問

  •  7列1行だけのDataGridViewなのですが 一つのセルに結構長い文章が入ります

     文字数の限界は設定しておりませんので セルが縦長になり過ぎて 下部は見えないところまで入力される場合があるのですが 行数は一行だけなので 縦スクロールバーが出てきません

     こんな場合にスクロールできるようにするには どうすれば良いのでしょうか 

     パネルに入れようかとも思ったのですが 文字ははみ出るもののDataGridView自身のサイズは変わらないので その方法も駄目でした 

     何か方法はないでしょうか? 

    2006年8月21日 14:59

回答

  •  なんとか できるようになりました

    下記のセルをDataGridViewのテンプレートにしました。

    Public Class ScrollCell
        Inherits DataGridViewTextBoxCell

        Public Sub New()

        End Sub

        Public Overrides Sub InitializeEditingControl(ByVal rowIndex As Integer, _
            ByVal initialFormattedValue As Object, _
            ByVal dataGridViewCellStyle As DataGridViewCellStyle)

            MyBase.InitializeEditingControl(rowIndex, initialFormattedValue, dataGridViewCellStyle)

            Dim ctl As TextBox = _
                CType(DataGridView.EditingControl, TextBox)
            ctl.ScrollBars = ScrollBars.Both
        End Sub

    End Class

    2006年9月8日 12:58

すべての返信

  • DataGridView のスクロールバーはセルをスクロールするために提供されているので、セルの中身(コンテンツ)をスクロールするにはコンテンツ用のスクロールバーを別に用意してあげる必要があります。以下のページを参考に、スクロールバー付のテキストボックスを持つ独自のセルを作成して対応してみてください。

    方法 : Windows フォーム DataGridView Cells でコントロールをホストする

    2006年8月24日 13:48
  •  にょり さんからの引用

    スクロールバー付のテキストボックスを持つ独自のセルを作成して対応してみてください。

    方法 : Windows フォーム DataGridView Cells でコントロールをホストする

    にょりさん ありがとうございます

    DataGridViewTextBoxCellのStyleで考えるという事でしょうか?

    メンバーを探してみたのですが 見つかりませんでした

    それとも DataGridViewTextBoxCellを継承したテンプレートにするためのユーザーコントロールのようなものを作るという事でしょうか

    もし そうだとしたら どのあたりから入っていけばよいのでしょうか?

     

    2006年8月26日 14:15
  •  なんとか できるようになりました

    下記のセルをDataGridViewのテンプレートにしました。

    Public Class ScrollCell
        Inherits DataGridViewTextBoxCell

        Public Sub New()

        End Sub

        Public Overrides Sub InitializeEditingControl(ByVal rowIndex As Integer, _
            ByVal initialFormattedValue As Object, _
            ByVal dataGridViewCellStyle As DataGridViewCellStyle)

            MyBase.InitializeEditingControl(rowIndex, initialFormattedValue, dataGridViewCellStyle)

            Dim ctl As TextBox = _
                CType(DataGridView.EditingControl, TextBox)
            ctl.ScrollBars = ScrollBars.Both
        End Sub

    End Class

    2006年9月8日 12:58