Podrías usar un Timer que controle en todo momento lo que se ingresa en el Textbox:
private void Timer1_Tick(System.Object sender, System.EventArgs e)
{
if (TextBox1.Text == "SI") { //Si el texto es SI entonces...
System.Environment.Exit(0); //se cierra el programa
}
}
Así de sencillo.
Saludos.
Pero creo que ese TextBox va a ir aumentando de lineas, es decir, tendra escrito todo lo anterior tambien, por lo tanto no sera igual a Sí nunca.
Lo que tienes que hacer es crear el evento TextBox_Changed() algo asi es, que se ejecuta cuando cambia de texto el TextBox y le pones de codigo:
if (TextBox1.Text.Contains("Sí")) System.Environment.Exit(0);
Eso en el caso de que la palabra Sí (ya que solo diste un ejemplo) seria algo como "apagar", porque ahi lo hace el codigo es verificiar si en todo el texto existe esa palabra. Si es algo que repitiras seguramente, tendras que leer el ultimo cambio del textbox, es decir, la ultima linea y ahi ya no usaras Contains(), tendras que usar otros metodos que no recuerdo ahora mismo pero los encontras facil en google.
Si el TextBox se va borrando y poniendo una palabra de esas aleatorias cada vez, ahi si funcionaria lo que puso Lucas.AR, pero pone ese codigo dentro del evento TextBox1_Changed() de todas formas.