У меня есть пользовательский Winform Infopath UserControl, который загружает форму из библиотеки sharepoint. После открытия формы у меня есть ряд вызовов функций, чтобы извлечь некоторые данные из формы, даже функцию снимка экрана. Но загрузка формы занимает много времени, и другие функции завершают работу слишком быстро, задолго до загрузки формы, что дает мне неверные результаты.
Можно ли как-нибудь использовать функцию ожидания, которая ожидает завершения загрузки формы infopath до вызова других функций? (В c #)
- Обновление
Пример кода:
Внутри UserControl, у меня есть функция инициализации формы, которая в основном загружает форму
public void InitializeInfoPathForm(string myurl)
{
if (this.IsInitialized) return;
CreateForm(new Uri(myurl),null);
}
public void CreateForm(
Uri formUrlName,
Stream dataStream)
{
TestInitialization();
try
{
this.formControl.Close();
// Open / create a form
if (dataStream != null)
formControl.Open(
formUrlName.ToString()
);
else
{
formControl.Open(
formUrlName.ToString());
}
RefreshView(UIStatesForm.DocumentReadMode);
}
catch (Exception)
{
RefreshView(UIStatesForm.NoDocumentAvailable);
throw;
}
}
Winform выглядит так:
public partial class Form1 : Form
{
public Form1(string sharepoint_url)
{
InitializeComponent();
this.infoPathUserControl1.InitializeInfoPathForm(sharepoint_url);
takescreenshot();
}
}
Я пытался поместить takecreenshot () в обработчики событий Form1_Load и Form1_Shown, но все же снимки экрана появляются намного раньше, чем загрузка формы, потому что FormControl.Open () занимает много времени. Я мог бы поместить функцию скриншота в событие button_click, но я хочу автоматизировать эту процедуру. Я даже попытался поместить его в процедуру button_click и вызвал button.PerformClick из обработчика событий Form_Load.
Советы.