Tienes varios fallos:
1º Creas el fichero zip fuera del bucle, por eso se te crea los siguientes zip con los ficheros anteriores.
2º Estás usando mal esto: System.IO.Path.GetDirectoryName(Me.TextBox1.Text. Esto devuelve el directorio de la ruta que le pases. Por tanto, si has seleccionado el directorio C:\Directorio\Prueba, te va a devolver C:\Directorio.
Te recomiendo además que uses el método EnumerateFiles, que es más eficiente. (Puedes leer porque buscando en Google).
Además, no indicas si quieres comprimir los ficheros en subdirectorios o sólo los que se encuentren en el directorio directamente. Si quieres en los subdirectorios sólo tienes que cambiar
Directory.EnumerateFiles(Me.TextBox1.Text) por
Directory.EnumerateFiles(Me.TextBox1.Text, "*", SearchOption.AllDirectories)
Código vb:
Ver originalPublic Sub Comprimir()
Dim txtFiles = Directory.EnumerateFiles(Me.TextBox1.Text)
For Each currentFile As String In txtFiles
Using zip As ZipFile = New ZipFile()
zip.AddFile(currentFile, "")
zip.Save(System.IO.Path.Combine(System.IO.Path.GetDirectoryName(currentFile), System.IO.Path.GetFileNameWithoutExtension(currentFile) + ".zip"))
End Using
Next
End Sub