Back colour of button not changing when updated in FOR loop - VB.Net : Working in Visual Studio 2017, in Visual Basic in a Windows Form App (.NET Framework).

I'm trying to create a button where the back-colour of the button is a changing gradient. I made a simple algorithm to make the gradient change, and a time delay function to wait between the colour changes. However, the colour just doesn't update within the for loops as it carries out and only shows the final result, so how to fix it? Think it's an issue with the time delay function, but not sure, anyways here's the code:

    Public Class Form1
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    
        End Sub
    
        Public Sub bg_MouseClick(sender As Object, e As MouseEventArgs) Handles bg.MouseClick
    
            Dim r As Integer = 241
            Dim g As Integer = 121
            Dim b As Integer = 121
    
            For x = g To r
                g += 1
                bg.BackColor = Color.FromArgb(r, g, b)
                timeDelay(0.01)
            Next
    
            For x = b To r
                r -= 1
                bg.BackColor = Color.FromArgb(r, g, b)
                timeDelay(0.01)
            Next
    
            For x = b To g
                b += 1
                bg.BackColor = Color.FromArgb(r, g, b)
                timeDelay(0.01)
            Next
    
            For x = r To g
                g -= 1
                bg.BackColor = Color.FromArgb(r, g, b)
                timeDelay(0.01)
            Next
    
            For x = g To b
                r += 1
                bg.BackColor = Color.FromArgb(r, g, b)
                timeDelay(0.01)
            Next
    
            For x = g To b
                b -= 1
                bg.BackColor = Color.FromArgb(r, g, b)
                timeDelay(0.01)
            Next
    
            MessageBox.Show("Finished")
        End Sub
        Public Sub timeDelay(ByVal secondsDelayedBy As Double)
            Dim stopwatch As New Stopwatch
            Dim endtimer = False
            stopwatch.Start()
            Do Until endtimer = True
                If stopwatch.ElapsedMilliseconds > (secondsDelayedBy * 1000) Then
                    endtimer = True
                    stopwatch.Stop()
                End If
            Loop
        End Sub
    
    End Class