Показать окно сообщения после события клика - PullRequest
0 голосов
/ 17 мая 2018

Я пишу пользовательский код за формой 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.
        }

Проблема, с которой я сталкиваюсь, заключается в том, что появляется окно сообщениякак только кнопка нажата, за индикатором выполнения экспорта.Когда индикатор выполнения завершается через секунду или две, и оно, и окно сообщения исчезают.Вот скриншот того, что я вижу за эти две секунды:

enter image description here

Как я могу сделать всплывающее окно с сообщением ПОСЛЕ того, как щелкнуло событиезавершил обработку всего?


РЕДАКТИРОВАТЬ: Я обновил код для использования логической переменной (exportDone), которая начинается с false и получает значение true после выполнения веб-службы,Однако это не решило проблему.

...