DOBON.NET DOBON.NETプログラミング掲示板過去ログ

DataGridViewのセルの幅によって横スクロールができない

環境/言語:[WindowsXP C# .Net Framwork2.0]
分類:[.NET]

いつも参考にしております。
DetaGridViewのセルの幅とスクロールについて質問させてください。

表題の通りなのですが、DataGridViewのセルの幅によって
横スクロールができないことがあるのですが、解消方法がわからず困っています。

例えば、DataGridViewの幅を450とし、そこにA〜Fの六つの列を配置します。
各列の幅はEのみ300で、他は100です。
この設定で起動すると、最初はA〜D列とE列の一部が表示されています。

<イメージ>
|−−−−データグリッドの幅−−−−|

|−A−|−B−|−C−|−D−|−−−E−−−|−F−|


ここから「→」キーでカーソルを移していき、Eにカーソルが来たときに
Eのセル全体が表示されるようにスクロールしてほしいのですが、それが出来ません。
(E列の幅を200にすると思ったとおりの動きをしてくれるのですが・・・)

何かよい解消方法があればアドバイスを頂けますでしょうか。
よろしくお願いします。
お疲れ様です

苦しい方法ですが、
列E以外の幅を100→102にしてみてください

# DataGridViewのWidthが450の場合、私のPCではうまくいきました
# 原因はさっぱり分かりません
■No25207に返信(H.K.R.さんの記事)

ご回答ありがとうございます。

> 苦しい方法ですが、
> 列E以外の幅を100→102にしてみてください
> # DataGridViewのWidthが450の場合、私のPCではうまくいきました
> # 原因はさっぱり分かりません

確かに私のほうでも102にすると上手くスクロールしました。
しかし、このように手探りで上手くスクロールする幅を見つけるしかないのでしょうか。

引き続き、原因と解消方法を調べていこうと思います。
何か情報がありましたら、教えてください。
よろしくお願いします。
■No25209に返信(kamomeさんの記事)
> 確かに私のほうでも102にすると上手くスクロールしました。
末尾に、さらに幅 2 ドットの G 列を追加した場合もスクロールしました。

> しかし、このように手探りで上手くスクロールする幅を見つけるしかないのでしょうか。
製品側の不具合が予想されるので、Microsoft のサポートを利用した方が良いかも。
2009/08/14(Fri) 23:51:22 編集(投稿者)

kamomeさん、お疲れ様です
魔界の仮面弁士さん、フォローありがとうございます
 
&gt; しかし、このように手探りで上手くスクロールする幅を見つけるしかないのでしょうか。
以下のコード(力技)で回避できるか試してみてください(私のPCでは確認済み)
 
<削除>
# 100→102の謎は、いろいろ試してみると、
# 仕組みらしきものが見えてきました(説明は割愛させてください)
</削除>
 
    ' _dgv.AllowUserToOrderColumns = Falseにしてください
    Private Sub _dgv_CurrentCellChanged(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles _dgv.CurrentCellChanged
 
        Dim headerWidth As Integer = Me._dgv.Rows(0).HeaderCell.Size.Width
        Dim cellWidth As Integer = Me._dgv.ClientSize.Width - headerWidth
        Dim colIndex As Integer = Me._dgv.CurrentCell.ColumnIndex
 
        ' カレントセルが隠れる場合は、右端に表示されるようにする
        For i As Integer = colIndex To 0 Step -1
            cellWidth -= Me._dgv.Columns(i).Width
            If cellWidth <= 0 Then
                Me._dgv.FirstDisplayedScrollingColumnIndex = i
                Exit For
            End If
        Next
 
    End Sub
■No25210に返信(魔界の仮面弁士さんの記事)
> ■No25209に返信(kamomeさんの記事)

ご回答ありがとうございます。

> 製品側の不具合が予想されるので、Microsoft のサポートを利用した方が良いかも。

そうですね。確認してみます。
■No25211に返信(H.K.R.さんの記事)
> 2009/08/14(Fri) 23:51:22 編集(投稿者)

度々のご回答ありがとうございます。

H.K.Rさんが提示していただいた方法でイメージしていた動きをしてくれました。
これを元にもう少し細かくテストして、必要に応じて修正したいと思います。
本当にありがとうございました。

DOBON.NET | プログラミング道 | プログラミング掲示板