在for循环中使用转义键退出

时间:2013-04-08 20:19:20

标签: c# visual-studio-2010

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

  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循环。

1 个答案:

答案 0 :(得分:1)

你可以这样做:

    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;}   
    }