0

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

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

4

1 回答 1

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;}   
    }
于 2013-04-08T20:25:32.123 回答