Код перед циклом foreach не выполняется - PullRequest
1 голос
/ 24 августа 2010

Да, я наконец-то подумал о заголовке!

У меня есть цикл foreach, который выполняет итерации ListViewItems и что-то делает с каждым элементом.Но проблема не в том, что он не выполняет работу в цикле, а просто не выполняет код, который появляется до цикла foreach.

Ниже приведен полный метод:

    private void pNGToolStripMenuItem_Click(object sender, EventArgs e)
    {
            stat.Text = "Converting to PNG.";
            _piclist.Enabled = false;

            foreach (ListViewItem item in _piclist.Items)
            {
                try
                {
                    /* magical image conversion here. */
                   _piclist.Enabled = true;
                       stat.Text =
                          "Conversion complete.";

                }
                catch (Exception exception)
                {
                    stat.Text =
                        exception.Message;

                }
            }
    }

Может кто-нибудь помочь мне понять, почему код:

stat.Text = "Converting to PNG.";
            _piclist.Enabled = false;

до того, как цикл foreach никогда не будет выполнен?

Спасибо

Ответы [ 3 ]

4 голосов
/ 24 августа 2010

Это так.Дело в том, что тело вашего цикла немедленно перезаписывает результаты кода, который был запущен ранее:

stat.Text = "Converting to PNG.";
            _piclist.Enabled = false;

           _piclist.Enabled = true;
               stat.Text =
                  "Conversion complete.";

Вы не видите его, потому что пользовательский интерфейс зависает при выполнении вашего метода, и вы видите только последние изменения.Подумайте об использовании темы, отличная статья здесь: http://msdn.microsoft.com/en-us/magazine/cc164037.aspx

3 голосов
/ 24 августа 2010

Как вы подтвердили, что код никогда не выполнялся?Вы установили точку останова?

Как только цикл foreach введен, значения _piclist.Enabled и stat.Text, установленные до цикла, перезаписываются новыми значениями (true и "Conversion complete"Возможно, пользовательский интерфейс никогда не обновляется.

0 голосов
/ 24 августа 2010

Похоже, вы не зарегистрировали обработчик с событием ... (+ =)

*

Martin * 1003

Ps. Чтобы уточнить - я говорю, что весь метод не вызывается, потому что я подозреваю, что вы не зарегистрировали этот обработчик для события ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...