0

読み込みに約 10 秒かかる大量のカスタム コントロールを含む C# Winforms フォームがあります。現在、メニュー項目をクリックしてフォームを開くと、メニューが 10 秒間フリーズした後、すぐにフォームがポップアップ表示されます。私がやりたいことは次のとおりです。適切なメニュー項目をクリックしてフォームを開くとすぐに、フォームをすぐに表示したいのですが、おそらく赤い背景だけでコントロールはありません。その後、フォームはすべてのコントロールの読み込みを開始できます。そうすれば、ユーザーはマウス クリックで新しいフォームが開いたことを確認でき、アプリ全体がフリーズしたようには見えません。それを新しいスレッドに移動することはオプションではありません。

4

1 に答える 1

1

ユーザー コントロールを別のユーザー コントロールに配置して、Shown イベントでインスタンス化し、フォームに追加してみましたか。

つまり、このようなもの

フォーム1

public partial class Form1 : Form
{
    UserControl1 usr;
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Shown(object sender, EventArgs e)
    {
        usr = new UserControl1();
        usr.Dock = DockStyle.Fill;
        panel1.Controls.Add(usr);
    }
}

ユーザーコントロール1

public partial class UserControl1 : UserControl
{
    public UserControl1()
    {
        System.Threading.Thread.Sleep(10000);
        InitializeComponent();

    }
}
于 2012-11-25T20:41:50.983 に答える