private void ProcessFile()
        {
            List <string>       Files = Func.GetFilesFromDir(DirPath, "*.json");
            List <SaveResultV2> Saves = SaveResultV2.ReadFile(Files);

            ProcessBarPage.SetMaxAndMin(0, Saves.Count);
            for (int i = 0; i < Saves.Count; i++)
            {
                ProcessBarPage.SetProgressValue(i);
                Saves[i].CheckKeyPoints();
                SaveResultV2.SaveFile(Saves[i], Files[i]);
            }
            ProcessBarPage.CloseWindows();
            OK();
        }
        private void btnProcess_Click(object sender, EventArgs e)
        {
            StringBuilder       sb           = new StringBuilder();
            string              SourcePath   = txtFilePath.Text;
            string              SourcePatten = "*.json";
            string              TargetPath   = txtTargetPath.Text;
            List <string>       paths        = Func.GetFilesFromDir(SourcePath, SourcePatten);
            List <SaveResultV2> Results      = new List <SaveResultV2>();
            StringBuilder       ErrorBuilder = new StringBuilder();

            for (int i = 0; i < paths.Count; i++)
            {
                string       jsonpath = paths[i];
                string       dcmPath  = jsonpath.Replace(".json", ".dcm");
                string       FileName = Path.GetFileName(dcmPath);
                SaveResultV2 item     = SaveResultV2.ReadFile(jsonpath);
                //判斷是否是V2版本存檔跟是否有滿足13個點
                if (item.ResultVersion == "2" && item.KeyPoints.Count == 13)
                {
                    string Message = String.Format("Check:{0}/{1}", i, paths.Count);
                    lblMessage.Text = Message;
                    bool HaveNullNode = true;
                    foreach (Nullable <Point> point in item.KeyPoints)
                    {
                        if (point == null)
                        {
                            HaveNullNode = false;
                            break;
                        }
                    }
                    if (HaveNullNode)
                    {
                        Func.CopyFile(jsonpath, TargetPath + @"\" + FileName.Replace(".dcm", ".json"));
                        Func.CopyFile(dcmPath, TargetPath + @"\" + FileName);
                        Results.Add(item);
                    }
                    else
                    {
                        ErrorBuilder.Append(String.Format("{0}{1}", jsonpath, Environment.NewLine));
                    }
                }
            }

            for (int i = 0; i < Results.Count; i++)
            {
                string Message = String.Format("Proc:{0}/{1}", i, Results.Count);
                lblMessage.Text = Message;
                if (i == Results.Count - 1)
                {
                    ProcessFile(ref sb, Results[i], false);
                }
                else
                {
                    ProcessFile(ref sb, Results[i], true);
                }
            }

            Func.WriteText(TargetPath + @"\" + "Total.txt", sb.ToString());
            Func.WriteText(TargetPath + @"\" + "Error.txt", ErrorBuilder.ToString());
            MessageBox.Show("OK", "OK");
        }