Categorizar los elementos del cuadro de lista por color

Así que estoy tratando de hacer un cuadro de lista con 2 botones. Se supone que Listbox muestra archivos de una carpeta específica (vuelvo a esto) Y se supone que los dos botones se denominan "Set .." (como en el directorio set) y Update (ya que la lista se actualizará (algo que hago) cada vez que se ejecuta el formulario de Windows.

A partir de ahora, cuando inicio mi aplicación y voy al formulario con el cuadro de lista, el cuadro de lista está vacío. Al presionar "Actualizar", el cuadro de lista recoge archivos de una dirección ubicada en mi disco duro (por lo tanto, esta es una dirección estática ubicada en mi código).

También encuentra 7 extensiones diferentes (tipos de archivo) y las enumera todas correctamente.

Mi problema es el siguiente, quiero que el botón de configuración abra un cuadro de diálogo de archivo para el usuario en First-Time Runtime, para que el usuario mismo pueda elegir qué carpeta "indexará o buscará" el programa si lo desea. Y luego, cuando vuelve a ejecutar la aplicación y encuentra el cuadro de lista, solo puede presionar Actualizar, y el cuadro de lista muestra el contenido de la carpeta que eligió la última vez.

El botón Establecer no hace nada en mi código en este momento.

En segundo lugar, quiero que cada tipo de archivo se etiquete o coloree con un color específico.

Me gusta; .txt debe ser azul, .jpg es rojo, etc.

Ejecutar Visual Studio 2013 si eso ayuda.

Además, cuando revise mi código, si también tiene alguna sugerencia, cómo puedo mejorar el código, hacer que sea más fácil, más corto y simplemente cambiar las cosas para evitar códigos duplicados, hágamelo saber.

Aquí es del diseño en VS2013

Código:

Private Sub Form_Load(sender As Object, e As EventArgs) Handles Me.Load

FolderBrowserDialog1.SelectedPath = "xxx\xxx\xxx\xxx"
        System.IO.Directory.GetCurrentDirectory()

 Private Sub updateButtonGame_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles updateButtonGame.Click
        If FolderBrowserDialog1.SelectedPath = "xxx\xxx\xxx\xxx" Then

            ListFiles(FolderBrowserDialog1.SelectedPath)

        End If
    End Sub

    Private Sub ListFiles(ByVal folderPath As String)
        filesListBox.Items.Clear()

        Dim fi = From f In New IO.DirectoryInfo(FolderBrowserDialog1.SelectedPath).GetFiles().Cast(Of IO.FileInfo)() _
                  Where f.Extension = ".z64" OrElse f.Extension = ".nds" OrElse f.Extension = ".BIN" OrElse f.Extension = ".smc" OrElse f.Extension = ".ISO" OrElse f.Extension = ".nes" OrElse f.Extension = ".gb"
                  Order By f.Extension
                  Select f

        For Each fileInfo As System.IO.FileInfo In fi
            filesListBox.Items.Add(fileInfo.Name)
        Next

    End Sub

Otra cosa, esto es más opcional.

Mi lista es completamente negra, así que elijo que los "Elementos" en el Cuadro de lista se vuelvan de color gris claro.

Jugué con algo llamado e.Graphics con la esperanza de lograr colorear un tipo de archivo específico, y convirtió TODOS los elementos en Negro, Rojo o lo que sea que le puse. Pero después de eliminar el código, todos los elementos se vuelven del mismo color que el color de fondo del cuadro de lista. Por lo tanto, ya no puedo ver los elementos que realmente están allí, aparte de la barra de desplazamiento que aparece al costado (debido a que hay muchos elementos en la carpeta que elegí)

Además, todavía no soy tan bueno con la codificación / estudio visual, ya que comencé hace aproximadamente 1 semana hasta la fecha. Comencé con VB 2010 y luego fui a VS2013 para ver si logré solucionar algunos problemas, también relacionados con List Box.

Si lo expliqué mal, avíseme y lo actualizaré con mejor información. El proyecto también se creó por primera vez en VB 2010, y luego "Migrado" o abierto en VS 2013.

Respuestas a la pregunta(1)

Su respuesta a la pregunta