Example #1
0
        private void CreateReport(CustomReports.ItemReport itemReport)
        {
            BackgroundWorker bw = new BackgroundWorker();

            bw.WorkerReportsProgress = true;

            bw.ProgressChanged += (s, e) => {
                if (e.UserState != null)
                {
                    TextBoxMain.Text += e.UserState.ToString() + Environment.NewLine;
                    TextBoxMain.ScrollToEnd();
                }
            };

            bw.DoWork += (s, e) => {
                CustomReports.Program.CreateReport(itemReport);
            };

            bw.RunWorkerCompleted += (s, e) => {
                if (e.Error != null)
                {
                    MessageBox.Show(this, e.Error.Message + Environment.NewLine + e.Error.StackTrace, "",
                                    MessageBoxButton.OK, MessageBoxImage.Error);
                }
                else
                {
                    MessageBox.Show(this, "Завершено", "",
                                    MessageBoxButton.OK, MessageBoxImage.Information);
                }

                ButtonClose.IsEnabled = true;
                Cursor = Cursors.Arrow;

                if (!string.IsNullOrEmpty(itemReport.FileResult))
                {
                    try {
                        string argument = "/select, \"" + itemReport.FileResult + "\"";
                        Process.Start("explorer.exe", argument);
                    } catch (Exception exc) {
                        MessageBox.Show(this, exc.Message, string.Empty, MessageBoxButton.OK, MessageBoxImage.Error);
                    }
                }
            };

            CustomReports.Logging.bw = bw;
            bw.RunWorkerAsync();
        }
        private void FileReader(string[] files, int startIndex, int endIndex)
        {
            // 設定ファイルの値読み込み
            setting = new SettingWindow.Setting();
            setting = SettingWindow.LoadSetting(setting);

            for (int fileIndex = startIndex; fileIndex < endIndex; fileIndex++)
            {
                TextBoxMainWrite();
                TextBoxMainWrite(files[fileIndex]);

                // ディレクトリかファイルか判別
                if (File.GetAttributes(files[fileIndex]).HasFlag(FileAttributes.Directory))
                {
                    // ディレクトリが読み込まれた場合

                    // ダイアログが埋もれないようにアクティブ化
                    FormMain.Activate();

                    string msgText    = "フォルダーが読み込まれました。フォルダー内にある全ての.tjaを変換しますか?";
                    string msgCaption = "警告";

                    TextBoxMainWrite();
                    TextBoxMainWrite(msgCaption + ":" + msgText);
                    TextBoxMain.ScrollToEnd();

                    var result = MessageBox.Show(this, files[fileIndex] + "\r" + msgText, msgCaption, MessageBoxButton.YesNo, MessageBoxImage.Exclamation);

                    // ダイアログでの選択を判別
                    if (result == MessageBoxResult.Yes)
                    {
                        // はいを選んだ場合
                        TextBoxMainWrite();
                        TextBoxMainWrite(">>はい");

                        // ディレクトリから.tjaファイルを検索(サブディレクトリを含む)
                        var tjaFiles = Directory.EnumerateFiles(files[fileIndex], "*.tja", SearchOption.AllDirectories);

                        if (tjaFiles.Count() >= 1)
                        {
                            // .tjaファイルが1件以上の場合
                            foreach (string tjaFilePath in tjaFiles)
                            {
                                TextBoxMainWrite();
                                TextBoxMainWrite(tjaFilePath);
                                OTCConvert(tjaFilePath);
                            }

                            msgText = tjaFiles.Count() + "件の.tjaファイルを変換しました。";
                        }
                        else
                        {
                            // .tjaファイルが0件の場合
                            msgText = ".tjaファイルがありませんでした。";
                        }

                        TextBoxMainWrite();
                        TextBoxMainWrite(msgText);
                        TextBoxMain.ScrollToEnd();

                        MessageBox.Show(this, msgText, "情報", MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                    else
                    {
                        // いいえを選んだ場合
                        TextBoxMainWrite();
                        TextBoxMainWrite(">>いいえ");
                    }
                }
                else
                {
                    // ファイルが読み込まれた場合
                    OTCConvert(files[fileIndex]);
                    System.Media.SystemSounds.Asterisk.Play();
                }
            }

            TextBoxMainWrite();
            TextBoxMainWrite("処理完了");

            TextBoxMain.ScrollToEnd();
        }