Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在面板上等待表格C_C#_Async Await_Load_Panel_Wait - Fatal编程技术网

C# 在面板上等待表格C

C# 在面板上等待表格C,c#,async-await,load,panel,wait,C#,Async Await,Load,Panel,Wait,我有三张表格。名称:主屏幕、加载窗体、电影信息。 当我按下主屏幕上的按钮时,它正在进行一些工作,加载窗体正在主屏幕上的面板内加载。我想在工作完成后,在主屏幕上的同一面板或加载窗体上的面板上显示MoviesInfo窗体。我该怎么做? 我像那样在面板上添加表单 public static void AddFormToPanel(Form frm, Panel panel) { frm.TopLevel = false; panel.Co

我有三张表格。名称:主屏幕、加载窗体、电影信息。 当我按下主屏幕上的按钮时,它正在进行一些工作,加载窗体正在主屏幕上的面板内加载。我想在工作完成后,在主屏幕上的同一面板或加载窗体上的面板上显示MoviesInfo窗体。我该怎么做? 我像那样在面板上添加表单

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);


            }

我不希望此行加载。ShowDialog(此);我想在面板内添加加载窗体。

将操作和控件移动到主窗体:

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比使用表单放置在面板中更好

请显示更多代码并添加更多关于您的问题的信息。我再次编辑了Look。否。我想在面板中显示loadingform。。。