为什么切换我的表单的可见性会禁用我的KeyDown事件?

时间:2011-04-15 19:49:32

标签: c# winforms loops panel visible

我在运行时创建了一个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 个答案:

答案 0 :(得分:3)

您永远不应更改更新操作的可见性。而是使用:

this.SuspendLayout();

// Do all the resizing here.

this.ResumeLayout();

答案 1 :(得分:-1)

this.Visible是服务器端调用,它阻止html控件和该控件的所有内容不会呈现给客户端。您可以尝试将样式更改为style="display:none;,以便可以将“面板”内的任何内容重新传输到客户端。