Guten Morgen Alle,
ich habe im Internet ein Programm gefunden, dass mir in einen DataGridView eine ProgressBar anzeigt. Funktioniert auch klasse.
Nun mein Problem. Ich habe in der Klasse 'ProgressCell' eine Abfrage eingebaut, mit der die Farbe der ProgressBar geändert wird. Leider kann ich den Wert nur fest vergeben hier z.B. 75.
Ich würde ihn aber gerne von Aussen ändern können. Kann mir von Euch jemand helfen.
Hier mal der Code.
Ich Danke Euch
ich habe im Internet ein Programm gefunden, dass mir in einen DataGridView eine ProgressBar anzeigt. Funktioniert auch klasse.
Nun mein Problem. Ich habe in der Klasse 'ProgressCell' eine Abfrage eingebaut, mit der die Farbe der ProgressBar geändert wird. Leider kann ich den Wert nur fest vergeben hier z.B. 75.
Ich würde ihn aber gerne von Aussen ändern können. Kann mir von Euch jemand helfen.
Hier mal der Code.
VB.NET-Quellcode
- Public Class Form1
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- Dim col As New ProgressColumn
- DataGridView1.Columns.Add(col)
- DataGridView1.Rows(0).Cells(0).Value = 74
- End Sub
- End Class
- Public Class ProgressColumn
- Inherits DataGridViewColumn
- Public Sub New()
- MyBase.New(New ProgressCell())
- End Sub
- Public Overrides Property CellTemplate() As DataGridViewCell
- Get
- Return MyBase.CellTemplate
- End Get
- Set(ByVal Value As DataGridViewCell)
- If Value IsNot Nothing And Not TypeOf (Value) Is ProgressCell Then
- Throw New InvalidCastException("Must be a ProgressCell")
- End If
- MyBase.CellTemplate = Value
- End Set
- End Property
- End Class
- Public Class ProgressCell
- Inherits DataGridViewImageCell
- Protected Overrides Function GetFormattedValue(ByVal value As Object, ByVal rowIndex As Integer, ByRef cellStyle As System.Windows.Forms.DataGridViewCellStyle, ByVal valueTypeConverter As System.ComponentModel.TypeConverter, ByVal formattedValueTypeConverter As System.ComponentModel.TypeConverter, ByVal context As System.Windows.Forms.DataGridViewDataErrorContexts) As Object
- Dim bmp As Bitmap = New Bitmap(Me.Size.Width, Me.Size.Height)
- Using g As Graphics = Graphics.FromImage(bmp)
- Dim percentage As Double = 0
- Double.TryParse(Me.Value.ToString(), percentage)
- Dim text As String = percentage.ToString() + " %"
- Dim f As Font = New Font("Arial Rounded MT", 9, FontStyle.Bold)
- Dim w As Integer = CType(g.MeasureString(text, f).Width, Integer)
- Dim h As Integer = CType(g.MeasureString(text, f).Height, Integer)
- g.DrawRectangle(Pens.Black, 2, 2, Me.Size.Width - 6, Me.Size.Height - 6)
- If percentage < 75 Then
- g.FillRectangle(Brushes.GreenYellow, 3, 3, CInt((Me.Size.Width - 6) * percentage / 100), CInt(Me.Size.Height - 7))
- Else
- g.FillRectangle(Brushes.Red, 3, 3, CInt((Me.Size.Width - 6) * percentage / 100), CInt(Me.Size.Height - 7))
- End If
- Dim rect As RectangleF = New RectangleF(0, 2, bmp.Width, bmp.Height)
- Dim sf As StringFormat = New StringFormat()
- sf.Alignment = StringAlignment.Center
- g.DrawString(text, f, Brushes.Black, rect, sf)
- End Using
- Return bmp
- End Function
- End Class
Ich Danke Euch
![:)](https://www.vb-paradise.de/wcf/images/smilies/smile.png)