在for循环中使用escape键退出

我有这个循环并正在工作:

for (int x = 0; x < nombres.Length; x++) { ValidXX.Text = x.ToString(); ValidXY.Text = nombres.Length.ToString(); origen = nombres[x]; cambia = nombres[x]; pedrito = control.ValidarDocumentoXML(cambia); if (pedrito == true) { } else /* File.Move (origen , destino );*/ try { } catch(IOException iox) { MessageBox.Show(iox.Message); } { /* corrupto[x] = cambia; */ MessageBox.Show("malo" + cambia); } } 

我想用转义键打破这个循环,我试试这个:

  private void Importar2_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Escape) { } } 

但我无法将此key_down写入for循环。

你可以这样做:

  bool escPressed = false; .... //run your loop in a different thread Thread thread = new Thread(new ThreadStart(MyLoop)); thread.Start(); .... void MyLoop() { for (int x = 0; x < nombres.Length; x++) { if(escPressed) break; ValidXX.Text = x.ToString(); ValidXY.Text = nombres.Length.ToString(); origen = nombres[x]; cambia = nombres[x]; pedrito = control.ValidarDocumentoXML(cambia); if (pedrito == true) { } else /* File.Move (origen , destino );*/ try { } catch(IOException iox) { MessageBox.Show(iox.Message); } { /* corrupto[x] = cambia; */ MessageBox.Show("malo" + cambia); } } } private void Importar2_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Escape) { escPressed = true;} }