private void PostSearchUiCleanup(Dictionary <string, Exception> failedFiles) { foreach (var key in failedFiles.Keys) { AddWarning($"Skipped {key}: {failedFiles[key]}"); } PopulateRows(); MultiThread.SetProperty(btnSearch, "Enabled", true); MultiThread.UpdateToolStripStatus(lblStatus, _stop ? $"Stopped: {_dataSource.Rows.Count} hits" : $"Done: {_dataSource.Rows.Count} hits"); var endTime = DateTime.Now; var duration = endTime - _startTime; MultiThread.UpdateToolStripStatus(lblStopped, $@"Stop Search: {endTime:HH:mm:ss}"); AddInfo($@"Stop Search: {endTime:HH:mm:ss}"); MultiThread.UpdateToolStripStatus(lblDuration, $@"Duration: {duration.TotalSeconds}s"); foreach (Control c in Controls) { if (c is Button || c is CheckBox || c is TextBox) { MultiThread.SetProperty(c, "Enabled", true); } } MultiThread.SetProperty(btnStop, "BackColor", SystemColors.Control); MultiThread.SetProperty(btnStop, "Enabled", false); MultiThread.SetProperty(btnStop, "Visible", false); MultiThread.InvokeMethod(txtSearchString, "Focus", null); MultiThread.SetProperty(grdResults, "DataSource", _dataSource); MultiThread.SetProperty(tabControl, "SelectedIndex", 0); //might be a better way to do this, but this works. if (grdResults.Columns.Count > 0) { foreach (DataGridViewColumn col in grdResults.Columns) { MultiThread.SetChildProperty(grdResults, col, "AutoSizeMode", DataGridViewAutoSizeColumnMode.AllCells); } foreach (DataGridViewColumn col in grdResults.Columns) { int w = col.Width; MultiThread.SetChildProperty(grdResults, col, "AutoSizeMode", DataGridViewAutoSizeColumnMode.None); MultiThread.SetChildProperty(grdResults, col, "Width", w); } } MultiThread.SetProperty(tabControl, "Visible", true); MultiThread.InvokeMethod(grdResults, "Focus", null); }
private void AddLog(string message, LogType logType) { Color lineColor; switch (logType) { case LogType.Info: if (!_properties.LogInfo) { return; } lineColor = Color.Black; break; case LogType.Warning: if (!_properties.LogWarning) { return; } lineColor = Color.BlueViolet; _newWarnings = true; tabControl.Refresh(); break; case LogType.Error: if (!_properties.LogError) { return; } lineColor = Color.Red; _newErrors = true; tabControl.Refresh(); break; default: throw new ArgumentOutOfRangeException(nameof(logType), logType, null); } var preLength = int.Parse(MultiThread.GetProperty(rtbLog, "TextLength").ToString()); MultiThread.InvokeMethod(rtbLog, "AppendText", new object[] { $"\r\n {DateTime.Now} - " }); MultiThread.InvokeMethod(rtbLog, "AppendText", new object[] { message }); var postLength = int.Parse(MultiThread.GetProperty(rtbLog, "TextLength").ToString()); MultiThread.InvokeMethod(rtbLog, "Select", new object[] { preLength, postLength }); MultiThread.SetProperty(rtbLog, "SelectionColor", lineColor); switch (logType) { case LogType.Info: MultiThread.SetProperty(rtbLog, "SelectionColor", Color.Black); break; case LogType.Warning: MultiThread.SetProperty(rtbLog, "SelectionColor", Color.BlueViolet); break; case LogType.Error: MultiThread.SetProperty(rtbLog, "SelectionColor", Color.Red); break; default: throw new ArgumentOutOfRangeException(nameof(logType), logType, null); } MultiThread.InvokeMethod(rtbLog, "Select", new object[] { 0, 0 }); }