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