0

パネル p2 は、パネル 1 の幅が 0 になるまで表示されません。ただし、me​​ssageBox コードのコメントを外すと、messageBox が表示されたときに p2 がレンダリングされます。これにより、C# は、UI ペイントを強制する他のイベント (messageBox など) まで、p2 での再描画をネイティブに遅延させると考えられます。

どうすればこれを回避できますか?

    private void SlidePanel(UIPanel p, UIPanel p2)  //, Direction d)
    {
        int prevWidth = p.Width;
        PanelDockStyle prevDock = p.DockStyle;
        p.DockStyle = PanelDockStyle.Left;

        p2.Show();

        while (p.Width > 0)
        {
            p.Width -= (p.Width > 4 ? 4 : p.Width);
            Thread.Sleep(1);

            //if (p.Width < 400)
            //{
            //    MessageBox.Show("Ha");
            //    break;
            //}
        }

        p.Hide();
        p.DockStyle = prevDock;
        p.Width = prevWidth;
    }
4

1 に答える 1

0

p2.Refresh()。朝の午前 6 時にコードを書くと、このようなことが起こります。:-|

于 2013-11-01T11:03:22.500 に答える