Почему переключение видимости моей формы отключает мое событие KeyDown? - PullRequest
2 голосов
/ 15 апреля 2011

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

this.Visible = false;

до моего цикла и

this.Visible = true;

после моего цикла.

 for (int i = 0; i < Size; i++)
        {
            for (int j = 0; j < Size; j++)
            {
                _panel = new Panel();
                _panel.Location = new Point((i * _panel.Size.Width) + ((i + 1) * _border), (j * _panel.Size.Height) + ((j + 1) * _border));                    
                this.Controls.Add(_panel);
            }
        }

Приведенный выше код работает ОТЛИЧНО, но работает только один раз.После того, как я переключаю видимость своей формы, событие KeyDown больше не происходит, когда я нажимаю клавишу.

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 16 апреля 2011

Вы никогда не должны изменять видимость для операций обновления. Скорее используйте:

this.SuspendLayout();

// Do all the resizing here.

this.ResumeLayout();
0 голосов
/ 16 апреля 2011

this.Visible - это вызов на стороне сервера, который предотвращает передачу клиенту элемента управления html и всего содержимого этого элемента управления.Вы можете попробовать изменить стиль на style="display:none;, чтобы все, что находится внутри этой «панели», могло быть передано клиенту.

...