1

Excelsheet のセルの色が見つかりました This is it possible to do this in VB.net Listview ??

ここに画像の説明を入力

4

1 に答える 1

1

ListView.DrawSubitem イベントをコーディングする必要があります ( MSDN ドキュメント) 。

複雑なものを描く必要がある場合は、より具体的な質問を作成してみてください。

ここに画像の説明を入力

カスタム描画 ListView SubItems のコードは次のとおりです。(フォームを作成し、ListView1 というリストビューを挿入して、OwnerDraw プロパティを True に設定します)

値に依存する描画については、コーディングスキルを使用する必要があります。幸運を祈ります!!

System.Drawing.Drawing2D をインポートします

パブリック クラス Form2

Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    Dim itmX As ListViewItem
    For iRow As Integer = 0 To 10
        itmX = ListView1.Items.Add(iRow.ToString, iRow.ToString, "")
        For iCol As Integer = 1 To 3
            itmX.SubItems.Add(iCol.ToString)
        Next
    Next

End Sub

Private Sub ListView1_DrawColumnHeader(sender As Object, e As DrawListViewColumnHeaderEventArgs) Handles ListView1.DrawColumnHeader
    e.DrawDefault = True
End Sub

Private Sub ListView1_DrawItem(sender As Object, e As DrawListViewItemEventArgs) Handles ListView1.DrawItem
    'e.DrawDefault = True
End Sub

Private Sub ListView1_DrawSubItem(sender As Object, e As DrawListViewSubItemEventArgs) Handles ListView1.DrawSubItem

    Dim rnd As New Random(Now.TimeOfDay.Milliseconds)

    Dim r As Integer = rnd.Next(0, 255)
    Dim g As Integer = rnd.Next(0, 255)
    Dim b As Integer = rnd.Next(0, 255)

    Using br As New LinearGradientBrush(New Point(0, e.Bounds.Height / 2), New Point(e.Bounds.Width, e.Bounds.Height / 2), Color.FromArgb(255, r, g, b), Color.Transparent)
        e.Graphics.FillRectangle(br, e.SubItem.Bounds)
        e.Graphics.DrawRectangle(Pens.Black, e.SubItem.Bounds)
        e.DrawText()
    End Using

End Sub

クラス終了

于 2013-11-12T13:01:55.820 に答える