datagridprogressbarcolumn.vb

来自「TaskVision 应用程序展示了用于个人和公司相关任务管理的一个完整的 n 」· VB 代码 · 共 41 行

VB
41
字号
Public Class DataGridProgressBarColumn
    Inherits System.Windows.Forms.DataGridTextBoxColumn

    Public Sub New(ByVal headerText As String, ByVal mappingName As String, ByVal width As Integer)
        MyBase.HeaderText = headerText
        MyBase.MappingName = mappingName
        MyBase.Width = width
    End Sub

    Protected Overloads Overrides Sub Edit(ByVal source As System.Windows.Forms.CurrencyManager, ByVal rowNum As Integer, ByVal bounds As System.Drawing.Rectangle, ByVal isReadOnly As Boolean, ByVal instantText As String, ByVal cellIsVisible As Boolean)
        'Do Nothing
    End Sub

    Protected Overloads Overrides Sub Paint(ByVal g As System.Drawing.Graphics, ByVal bounds As System.Drawing.Rectangle, ByVal source As System.Windows.Forms.CurrencyManager, ByVal rowNum As Integer, ByVal backBrush As System.Drawing.Brush, ByVal foreBrush As System.Drawing.Brush, ByVal alignToRight As Boolean)
        Dim progressVal As Integer = CType(GetColumnValueAtRow(source, rowNum), Integer)
        Dim percentage As Single = CType((progressVal / 100), Single)

        'if the current row is this row, draw the selection back color
        If Me.DataGridTableStyle.DataGrid.CurrentRowIndex = rowNum Then
            g.FillRectangle(New SolidBrush(Me.DataGridTableStyle.SelectionBackColor), bounds)
        Else
            g.FillRectangle(backBrush, bounds)
        End If

        If percentage > 0.0 Then
            ' Draw the progress bar and the text
            g.FillRectangle(New SolidBrush(Color.FromArgb(163, 189, 242)), bounds.X + 2, bounds.Y + 2, Convert.ToInt32((percentage * bounds.Width - 4)), bounds.Height - 4)
            g.DrawString(progressVal.ToString() & "%", Me.DataGridTableStyle.DataGrid.Font, foreBrush, bounds.X + 6, bounds.Y + 2)
        Else
            'draw the text
            If Me.DataGridTableStyle.DataGrid.CurrentRowIndex = rowNum Then
                g.DrawString(progressVal.ToString() & "%", Me.DataGridTableStyle.DataGrid.Font, New SolidBrush(Me.DataGridTableStyle.SelectionForeColor), bounds.X + 6, bounds.Y + 2)
            Else
                g.DrawString(progressVal.ToString() & "%", Me.DataGridTableStyle.DataGrid.Font, foreBrush, bounds.X + 6, bounds.Y + 2)
            End If
        End If
    End Sub



End Class

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?