Ciao, dovresti specificare meglio quali sono i dati di partenza che devono essere scritti nel file CSV.
Vedendo il tuo esempio sembra che i dati nella textbox siano già in un formato CSV (Comma Separated Values) e che il file risultante avrà sempre una sola riga.
Se così fosse ti basterebbe scrivere in un file il contenuto della textbox.
Volendo fare ulteriore passaggio, potresti seguire le regole che trovi qua:
https://en.wikipedia.org/wiki/Comma-separated_values#RFC_4180_standard
Di seguito trovi un esempio per creare un file CSV composto da una sola riga.
Se dovessi scriverne più di una, ti consiglio di creare una lista di righe e adattare l'esempio per elaborarne sempre una alla volta.
// Array che rappresenta una riga di un file CSV.
var line = new[] { "Simone", "Marco", "Francesca", "Roberto" };
// Array che rappresenta una riga di un file CSV inizializzato con alcuni casi "particolari".
//var line = new[] { "col1", "", "\"col3\"", "col\n4", "col;5" };
var stringBuilder = new StringBuilder();
for (int i = 0; i < line.Length; i++)
{
// Recupero l'i-esimo elemento dell'array e raddoppio eventuali doppi apici presenti.
var value = line[i].Replace("\"", "\"\"");
// Aggiungo l'elemento corrente tra doppi apici al contenuto del CSV.
stringBuilder.Append($"\"{value}\"");
// Se sono arrivato all'ultimo elemento della riga, aggiungo un "ritorno a capo" altrimenti un punto e virgola.
if (i == line.Length - 1)
{
stringBuilder.AppendLine();
}
else
{
stringBuilder.Append(";");
}
}
// Scrivo il file su disco.
File.WriteAllText("Studenti.csv", stringBuilder.ToString());
Utilizzando LINQ (non credo sia il tuo caso) potresti sostituire l'intero ciclo for con questo:
stringBuilder.AppendLine(string.Join(";", line.Select(x => $"\"{x.Replace("\"", "\"\"")}\"").ToList()));