RunningCSharp

MS系開発者による、雑多な記事。記事は所属企業とは関係のない、個人の見解です。

VB(.net) Windows10 WinForms・DataGridViewのColumnHeaderのソートを示す三角が見えなくなる

下記のようなコードを実行した際、右側のカラムにて、ColumnHeaderのソート順を示す三角形が表示されなくなる。

コード

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing
        DataGridView1.ColumnHeadersHeight = 20

        DataGridView1.Columns.Add("col1", "1")
        DataGridView1.Columns.Add("col2", "2222222222")
        DataGridView1.Rows.Add({1, 3})
        DataGridView1.Rows.Add({2, 4})

       DataGridView1.Columns().Item(1).Width = 110

    End Sub
End Class

実行結果

f:id:ys-soniclab:20190103185521p:plain
左側カラムでソート実施

f:id:ys-soniclab:20190103185545p:plain
右側カラムでソート実施

2枚目のスクリーンショットでは、右側のカラムでソートを実施しているが、ヘッダーに三角形が表示されない。 本問題は、文字がカラムいっぱいに広がることで、ソートを示す三角形が消えてしまうことで発生する。 カラムを広げる調整を行うことで、問題を回避できる。

コード

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing
        DataGridView1.ColumnHeadersHeight = 20

        DataGridView1.Columns.Add("col1", "1")
        DataGridView1.Columns.Add("col2", "2222222222")
        DataGridView1.Rows.Add({1, 3})
        DataGridView1.Rows.Add({2, 4})

        '以下を追加
        DataGridView1.Columns().Item(1).Width = 110

    End Sub
End Class

実行結果

f:id:ys-soniclab:20190103190025p:plain
コード変更後