2

実行時にグリッドを作成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、キーを押してもイベントが発生しなくなりました。

何か案は?

4

2 に答える 2

3

更新操作の可視性を変更しないでください。むしろ使用:

this.SuspendLayout();

// Do all the resizing here.

this.ResumeLayout();
于 2011-04-15T20:02:59.197 に答える
-1

this.Visibleは、html コントロールとそのコントロールのすべてのコンテンツがクライアントにレンダリングされないようにするサーバー側の呼び出しです。style="display:none;その「パネル」内にあるものをすべてクライアントに再ストリーミングできるように、スタイルを に変更してみてください。

于 2011-04-15T20:01:17.893 に答える