Пример #1
0
        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);
        }
Пример #2
0
        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 });
        }