private void ExecuteFindAllButton_OnClick(object senderIsButton, RoutedEventArgs eventArgs) { const string fileExtensionPattern = "*.dbf"; var sourceFolderPath = SourcePathTextBox.Text.Trim(); FilesRichTextBox.Document.Blocks.Clear(); if (string.IsNullOrWhiteSpace(sourceFolderPath)) { const string message = PageLiterals.ValidationRootPathNotSpecified; MessageBox.Show(message, PageLiterals.HeaderError, MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK); return; } if (!Directory.Exists(sourceFolderPath)) { var message = string.Format(PageLiterals.ValidationDirectoryInvalidPattern, sourceFolderPath); MessageBox.Show(message, PageLiterals.HeaderError, MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK); return; } var enumerable = SafeGetDirectoryFiles(sourceFolderPath, fileExtensionPattern, SearchOption.AllDirectories); var dbfFiles = enumerable as string[] ?? enumerable.ToArray(); if (!dbfFiles.Any()) { MessageBox.Show(PageLiterals.ValidationDbfNotFound, PageLiterals.HeaderInformationOrWarning, MessageBoxButton.OK, MessageBoxImage.Information, MessageBoxResult.OK); return; } var fileDescriptions = new List <FileDescription>(dbfFiles.Length); foreach (var dbfFile in dbfFiles) { if (!IsAccessToFile(dbfFile)) { continue; } var tableTypeFlag = ReadOneByteFromFile(dbfFile, 0); var tableEncodingFlag = ReadOneByteFromFile(dbfFile, 29); if (!TableTypes.ContainsKey(tableTypeFlag) || !TableEncodings.ContainsKey(tableEncodingFlag)) { var errorDescription = new FileDescription { Path = dbfFile, TypeFlag = tableTypeFlag, Db = "error", DbDescription = "error", EncodingFlag = tableEncodingFlag, EncodingCode = "error", EncodingName = "error" }; fileDescriptions.Add(errorDescription); FilesRichTextBox.AppendText(dbfFile); FilesRichTextBox.AppendText(Environment.NewLine); continue; } var tableTypeDescription = TableTypes[tableTypeFlag]; var tableEncodingDescription = TableEncodings[tableEncodingFlag]; var description = new FileDescription { Path = dbfFile, TypeFlag = tableTypeFlag, Db = tableTypeDescription.Item1, DbDescription = tableTypeDescription.Item2, EncodingFlag = tableEncodingFlag, EncodingCode = tableEncodingDescription.Item1, EncodingName = tableEncodingDescription.Item2 }; fileDescriptions.Add(description); FilesRichTextBox.AppendText(dbfFile); FilesRichTextBox.AppendText(Environment.NewLine); } MainDataGrid.ItemsSource = fileDescriptions; RefreshCountFoundedAndSetActivityExportButton(); SaveLastPath(); }