打开表单后,我会进行一系列函数调用以从表单中提取一些数据,甚至还有屏幕截图功能。但是表单加载需要很多时间,并且其他功能在表单加载之前完成得太快,这给了我错误的结果。有没有一种方法可以让等待函数在调用其他函数之前等待infopath表单完成加载?(在c#中)--update示例代码:在UserControl中,我有一个表单初始化函数,它基本上加载表单publicvoidInitializeInfoPathForm(stringmyurl){if(this.IsInitialized)return;CreateForm(新的Uri(myurl),null);}publicvoidCreateForm(UriformUrlName,StreamdataStream){TestInitialization();尝试{this.formControl.Close();//打开/创建一个表单if(dataStream!=null)formControl.Open(formUrlName.ToString());else{formControl.Open(formUrlName.ToString());}RefreshView(UIStatesForm.DocumentReadMode);}catch(Exception){RefreshView(UIStatesForm.NoDocumentAvailable);扔;}}Winform看起来像这样:publicpartialclassForm1:Form{publicForm1(stringsharepoint_url){InitializeComponent();this.infoPathUserControl1.InitializeInfoPathForm(sharepoint_url);截屏();我尝试将takescreenshot()放在Form1_Load和Form1_Shown事件处理程序中,但屏幕截图仍然比表单加载早得多,因为FormControl.Open()需要很多时间。我可以将屏幕截图功能放在button_click事件中,但我想自动执行此过程。我什至尝试将它放在button_click过程中并从Form_Load事件处理程序调用button.PerformClick。请问。您为此目的使用事件UserControl.ActivatedUserControl1.Activated+=newEventHandler(SeriesOfFunctions);然后在这个SeriesOfFunctions中编写代码,您还有其他选项,如UserControl.Load、UserControl.Activating您可以定义bool并将其设置为false,在加载infopath后,将其设置为true并且仅在这种情况下在表单构造函数中启动intialize_component。或类似的东西!如果我正确理解你的问题,那么你似乎有一个在不同线程上执行任务的竞争条件。如果可以...我会使用Form的On_Load函数;然而,如果你需要一个单独的线程来提高速度,这样后台任务就不必在开始之前等待表单,看看ManualResetEvent。正确加载后,您可以在事件上设置form.on_load事件调用。以上就是C#学习教程:等待WinformUserControl加载分享全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
