/// <summary> /// Z-A comparer /// </summary> /// <returns></returns> public static LogFileComparer GetInstance() { if (_logFileComparer == null) { _logFileComparer = new LogFileComparer(); } return(_logFileComparer); }
private void FetchLogFiles() { var files = new List <string>(); if (Directory.Exists(_logger.LogDir)) { foreach (string file in Directory.GetFiles(_logger.LogDir, "log*.txt", SearchOption.TopDirectoryOnly)) { files.Add(Path.GetFileName(file)); } } files.Sort(LogFileComparer.GetInstance()); bool refresh = cboLog.Items.Count != files.Count; if (!refresh) { for (int i = 0; i != files.Count; i++) { if (cboLog.Items[i] as string != files[i]) { refresh = true; break; } } } if (refresh) { cboLog.SelectedIndexChanged -= cboLog_SelectedIndexChanged; string selectedItem = cboLog.SelectedItem as string; int selectedIndex = cboLog.SelectedIndex; cboLog.Items.Clear(); cboLog.Items.AddRange(files.ToArray()); if (selectedItem != null && files.Contains(selectedItem) && cboLog.Items.Contains(selectedItem)) { cboLog.SelectedItem = selectedItem; } else if (selectedIndex != -1 && selectedIndex < files.Count) { cboLog.SelectedIndex = selectedIndex; } else if (files.Count != 0) { cboLog.SelectedIndex = 0; } btnClear.Enabled = cboLog.Items.Count != 0; cboLog.SelectedIndexChanged += cboLog_SelectedIndexChanged; } }