在面板上等待表单 C#

Wait Form C# On Panel

我有3个表格。名称:MainScreen、LoadingForm、MoviesInfo。 当我按下 MainScreen 上的按钮时,它正在做一些工作并且 LoadingForm 正在加载到 MainScreen.I 上的面板内想要完成工作后,在 MainScreen 或面板上的同一面板上显示 MoviesInfo Form加载表单。我怎样才能做到这一点? 我像那样在面板上添加表格。

public static void AddFormToPanel(Form frm, Panel panel)
        {
            frm.TopLevel = false;
            panel.Controls.Add(frm);
            frm.Show();
            frm.Dock = DockStyle.Fill;
            frm.BringToFront();
        }

//Loading Form
public partial class LoadingForm : Form
    {
        public Action Worker { get; set; }
        public LoadingForm(Action worker)
        {
            InitializeComponent();
            if (worker == null)
            {
                throw new ArgumentNullException();

            }
            Worker = worker;

        }
        private void btnCancel_Click_1(object sender, EventArgs e)
        {
            this.Close();
        }
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            Task.Factory.StartNew(Worker)
                .ContinueWith(t => { this.Close(); }, TaskScheduler.FromCurrentSynchronizationContext());
        }


    }

主屏幕表单

    private void MovieOnButtonClick(object sender, EventArgs eventArgs)
            {


  using (loading = new LoadingForm(getMovieData))
        {
            loading.ShowDialog(this);
        }

       AddFormToPanel(moviesInfo, panelMain);


            }

我不要这一行loading.ShowDialog(this);我想在面板中添加加载表单。

将操作和控件移动到 MainForm:

private async void MovieOnButtonClick(object sender, EventArgs eventArgs)
{
    var loadingForm = new LoadingForm();    // create a dummy loadingForm
    AddFormToPanel(loadingForm, panelMain);  

    var work = Task.Factory.StartNew(Worker);   // Worker = GetMovies or so
    await work;

    AddFormToPanel(moviesInfo, panelMain);    
    loadingForm.Dispose();
}

从 LoadingForm 中删除所有逻辑和事件。

并且最好使用 UserControl 而非 Forms 放置在该面板中。