阻止用户进程控制器在Winform完全加载和显示的控制之前执行

时间:2015-09-30 00:17:28

标签: c# winforms user-interface

我正在使用c#创建Excel VSTO。我的操作很简单,只需右键单击单元格并单击“更新”,显示进度状态的winform将提示输出并启动表单上的控件绑定到用户进程控制器。

问题是现在该进程已在表单完全加载之前启动并执行,是否有一种方法可以阻止用户进程控制器执行,然后才能完全显示和加载进度状态表单上的所有控件?下图描绘了我的状况。

我试图将我的User Process Controller调用设置为Form Activated,Shown,Loaded,并且没有任何效果。

这是表单加载的第一个阶段。注意:两行文本显示已执行用户控制进程。 Form stage 1

这是表单加载的第二个阶段。 Form stage 2

这是第三阶段 Form stage 3

最后它已满载。 Finally Loaded

1 个答案:

答案 0 :(得分:0)

我发现了一个克服这个问题的“黑客”。我添加了一个backgroundworker并在Form Constructor上完成了以下代码。

void backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
            UpdateUPC upc = new UpdateUPC();
            upc.txtUpdateSummary = txtUpdateProgress;
            upc.updateProgressBar = UpdateProgressBar;
            upc.UpdateStatusOnItem();
}

在BackgroundWorker的DoWork事件

{{1}}

最后,我在Run Worker Completed中添加了以下代码

{{1}}

我理解上述内容可能不是一个可接受的解决方案,但它可能只是为该问题提供了一种解决方法。但是,如果有任何人有更好的解决方案,请随时提出您的建议。