Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.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# Winform:如何仅在加载所有控件后显示窗体控件?_C#_.net_Winforms - Fatal编程技术网

C# Winform:如何仅在加载所有控件后显示窗体控件?

C# Winform:如何仅在加载所有控件后显示窗体控件?,c#,.net,winforms,C#,.net,Winforms,我有一个带有几个标签和按钮的windows窗体。 例如: 标签(u__________;)的值是在页面加载时从数据库中获取的。 当我打开此表单时,首先加载诸如姓名、年龄、电话等标签,然后在查询返回结果时更新,然后显示btnCancel和btnModify。我希望在获取值时立即加载整个表单。如果我能给出一些系统正在处理的指示,那也太好了 您可以将所有控件放入“面板”中,然后将面板设置为“可见”为“假”,加载和更新完成后,将面板设置为“可见”为“真” 发出忙碌状态信号的最简单方法是使用Control

我有一个带有几个标签和按钮的windows窗体。 例如:

标签(u__________;)的值是在页面加载时从数据库中获取的。
当我打开此表单时,首先加载诸如姓名、年龄、电话等标签,然后在查询返回结果时更新,然后显示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;
    }));
});