/// <summary> /// コピーメニューボタンイベント /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void CopyMenuItem_Click(object sender, EventArgs e) { DirectoryAnalyzeData[] analyzeDataList = folderViewControl.SelectedItems; StringBuilder copyData = new StringBuilder(); IParser parser = new CsvParser('\t'); // 現在選択されている行データをコピー foreach (DirectoryAnalyzeData analyzeData in analyzeDataList) { // 各セルのデータはタブで区切る foreach (string parseData in analyzeData.Parse(parser)) { copyData.AppendLine(parseData); } } // クリップボードに登録する。 if (copyData.Length > 0) { Clipboard.Clear(); Clipboard.SetText(copyData.ToString(), new TextDataFormat()); } }
/// <summary> /// ファイル保存ボタンクリックイベント /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void FileSaveAsMenuItem_Click(object sender, EventArgs e) { FileDialog fileDialog = new SaveFileDialog(); fileDialog.Filter = CsvParser.Filter + "|" + HtmlParser.Filter + "|" + TextParser.Filter; if (fileDialog.ShowDialog() != DialogResult.OK) { return; } IParser parser = null; String extension = Path.GetExtension(fileDialog.FileName).ToLower(); if (0 <= Array.IndexOf(CsvParser.Extentions, extension)) { parser = new CsvParser(); } else if (0 <= Array.IndexOf(HtmlParser.Extentions, extension)) { parser = new HtmlParser(); } else { parser = new TextParser(); } folderViewControl.Save(parser, fileDialog.FileName); }
/// <summary> /// 文字列配列のデータをCSV形式に変換を行います。 /// </summary> /// <param name="srcData">変換元のデータ</param> public string[] Parse(DirectoryAnalyzeData srcData, bool isAllData) { List<string> parseData = new List<string>(); if (isAllData == true) { // 内部ファイル List<DirectoryAnalyzeData> subFileList = new List<DirectoryAnalyzeData>(); subFileList.AddRange(srcData.FileData); subFileList.AddRange(srcData.SubDirectoryData); for (int subIndex = 0; subIndex < subFileList.Count; subIndex++) { string line = string.Empty; if (subIndex < subFileList.Count -1) { line = " |-"; } else { line = " L "; } parseData.Add(line + Parse(subFileList[subIndex], false)[0]); string[] subFileData = Parse(subFileList[subIndex], true); foreach (string subData in subFileData) { line = " "; if (subIndex < subFileList.Count - 1) { line = " | "; } parseData.Add(line + subData); } } } else { CsvParser csvParser = new CsvParser('\t'); parseData.AddRange(csvParser.Parse(srcData, false)); } return parseData.ToArray(); }