C# Winform:如何仅在加载所有控件后显示窗体控件?
我有一个带有几个标签和按钮的windows窗体。 例如: 标签(u__________;)的值是在页面加载时从数据库中获取的。C# Winform:如何仅在加载所有控件后显示窗体控件?,c#,.net,winforms,C#,.net,Winforms,我有一个带有几个标签和按钮的windows窗体。 例如: 标签(u__________;)的值是在页面加载时从数据库中获取的。 当我打开此表单时,首先加载诸如姓名、年龄、电话等标签,然后在查询返回结果时更新,然后显示btnCancel和btnModify。我希望在获取值时立即加载整个表单。如果我能给出一些系统正在处理的指示,那也太好了 您可以将所有控件放入“面板”中,然后将面板设置为“可见”为“假”,加载和更新完成后,将面板设置为“可见”为“真” 发出忙碌状态信号的最简单方法是使用Control
当我打开此表单时,首先加载诸如姓名、年龄、电话等标签,然后在查询返回结果时更新,然后显示btnCancel和btnModify。我希望在获取值时立即加载整个表单。如果我能给出一些系统正在处理的指示,那也太好了 您可以将所有控件放入“面板”中,然后将面板设置为“可见”为“假”,加载和更新完成后,将面板设置为“可见”为“真” 发出忙碌状态信号的最简单方法是使用Control.UseWaitCursor属性。您应该在另一个线程中进行实际加载 例如,在窗体或UserControl中:
panel1.Visible = false;
this.UseWaitCursor = true;
Task.Run(() => {
var data = LoadTheData();
this.BeginInvoke((Action)(() =>
{
labelName.Text = data.Name;
panel1.Visible = true;
this.UseWaitCursor = false;
}));
});
我知道这并不能回答您的问题,甚至可以被认为是离题的,但您确实需要开始使用WPF。一旦你越过了陡峭(我是说非常陡峭)的学习曲线,你就再也无法回到WinForms了。@Krythic适时地提醒Hanks,它也适用于groupbox。至于
UseWaitCursor
,这不会有多大帮助,因为我正在为KIOSK创建一个应用程序。屏幕上可能不会有光标。我已经标记了您的答案,但如果您知道任何其他方式来表示忙碌状态,请进行编辑。我认为您可以将PictureBox控件的图像设置为动画gif文件。。。让您的任务在后台线程上运行是这项工作所必需的。
panel1.Visible = false;
this.UseWaitCursor = true;
Task.Run(() => {
var data = LoadTheData();
this.BeginInvoke((Action)(() =>
{
labelName.Text = data.Name;
panel1.Visible = true;
this.UseWaitCursor = false;
}));
});