Я пишу пользовательский код за формой InfoPath, который выполняет несколько задач, и я хочу, чтобы по окончании работы все всплыло окно с сообщением «Экспорт завершен. Нажмите кнопку ОК, чтобы продолжить».Однако время в окне сообщений работает неправильно.Вот подробности:
Код ниже - это событие Clicked для кнопки «Экспорт» в форме.Он выполняет две функции - экспортирует представление формы в файл PDF, а затем копирует данные формы в список SharePoint через веб-службу.
public void CTRL_PDF_Clicked(object sender, ClickedEventArgs e)
{
// Write your code here.
bool exportDone = false;
//Declare variables
string fileName;
string fileLocation;
XPathNavigator nameNode;
XPathNavigator folderNode;
XPathNavigator timeNode;
//Set the values for each variable
nameNode = MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:PDFName", NamespaceManager);
folderNode = MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:FolderLocation", NamespaceManager);
fileName = nameNode.Value;
fileLocation = folderNode.Value;
//Do the work -- switch to the PDF view then export it as a PDF file.
Microsoft.Office.InfoPath.View currentView = this.CurrentView;
this.CurrentView.Export(@fileLocation + fileName + ".pdf", ExportFormat.Pdf);
//Now set up the values for SharePoint
string jobID = MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:PostID", NamespaceManager).Value;
string formPT = MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:Total_PT", NamespaceManager).Value;
string formBC = MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:Total_BC", NamespaceManager).Value;
string formSRS = MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:Total_SRS", NamespaceManager).Value;
string srsChoice = MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:SRSOption", NamespaceManager).Value;
string engName = MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:Engineer/my:Engineer_Company", NamespaceManager).Value;
// Now update the list item in SharePoint
XPathNavigator batch = DataSources["Post CAML"].CreateNavigator();
batch.SelectSingleNode("/Batch/Method/Field[@Name='ID']", NamespaceManager).SetValue(jobID);
batch.SelectSingleNode("/Batch/Method/Field[@Name='EstimatedFeet']", NamespaceManager).SetValue(formPT);
batch.SelectSingleNode("/Batch/Method/Field[@Name='BCEstFT']", NamespaceManager).SetValue(formBC);
//batch.SelectSingleNode("/Batch/Method/Field[@Name='SRSEst']", NamespaceManager).SetValue(formSRS);
batch.SelectSingleNode("/Batch/Method/Field[@Name='SRS']", NamespaceManager).SetValue(srsChoice);
batch.SelectSingleNode("/Batch/Method/Field[@Name='Engineer']", NamespaceManager).SetValue(engName);
string xmlPTEst = batch.SelectSingleNode("/Batch/Method/Field[@Name='EstimatedFeet']", NamespaceManager).Value;
string xmlBCEst = batch.SelectSingleNode("/Batch/Method/Field[@Name='BCEstFT']", NamespaceManager).Value;
string xmlSRSEst = batch.SelectSingleNode("/Batch/Method/Field[@Name='SRSEst']", NamespaceManager).Value;
string xmlSRSVal = batch.SelectSingleNode("/Batch/Method/Field[@Name='SRS']", NamespaceManager).Value;
WebServiceConnection wc = (WebServiceConnection)this.DataConnections["Web Service Submit"];
wc.Execute();
exportDone = true;
if (exportDone == true)
{
MessageBox.Show("Export Done. Click OK to continue.");
}
// End your code here.
}
Проблема, с которой я сталкиваюсь, заключается в том, что появляется окно сообщениякак только кнопка нажата, за индикатором выполнения экспорта.Когда индикатор выполнения завершается через секунду или две, и оно, и окно сообщения исчезают.Вот скриншот того, что я вижу за эти две секунды:
Как я могу сделать всплывающее окно с сообщением ПОСЛЕ того, как щелкнуло событиезавершил обработку всего?
РЕДАКТИРОВАТЬ: Я обновил код для использования логической переменной (exportDone), которая начинается с false и получает значение true после выполнения веб-службы,Однако это не решило проблему.