Отключить элементы управления слишком медленно - PullRequest
0 голосов
/ 19 марта 2012

Используя этот метод:

    private void disableControls()
    {
        foreach (Control c in this.Controls)
        {
            c.Enabled = false;
        }
    }

На форме, которая имеет только 5 элементов управления, почему она такая медленная?

Вы можете четко видеть, что каждый элемент управления отключен.

Edit:

Вот еще несколько деталей:

Единственный обработчик событий, который у меня есть в форме, связан с IndexChanged comboBox.

Форма, в которой я запускаю этот метод, является новой формой, вызываемой из родительской формы с использованием showDialog.

Фактически, метод отключения элементов управления - это первое, что вызывается при нажатии кнопки.

Я действительно не знаю, почему это происходит, я попытаюсь перезагрузиться и посмотреть, станет ли лучше.

1 Ответ

1 голос
/ 19 марта 2012

Невозможно воспроизвести. Вот короткая, но полная программа, которая довольно быстро отключает элементы управления. Если вы можете придумать похожий вариант, который работает медленно, мы можем решить, почему это медленно.

using System;
using System.Drawing;
using System.Windows.Forms;

class Test
{
    static void Main()
    {
        Form form = new Form();
        for (int i = 0; i < 4; i++)
        {
            Button button = new Button
            {
                Text = "Dummy",
                Location = new Point(10, i * 25)
            };
            form.Controls.Add(button);
        }
        Button disabler = new Button
        {
            Text = "Disable",
            Location = new Point(10, 100)
        };
        disabler.Click += delegate
        {
            foreach (Control c in form.Controls)
            {
                c.Enabled = false;
            }
        };
        form.Controls.Add(disabler);
        Application.Run(form);
    }                   
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...