/// <summary> /// This thread is responsible for figuring out what days screenshots were taken. /// </summary> /// <param name="e"></param> private void RunDateSearch(DoWorkEventArgs e) { if (monthCalendar.InvokeRequired) { monthCalendar.Invoke(new RunDateSearchDelegate(RunDateSearch), new object[] { e }); } else { if (_screenshotCollection != null) { List <string> dates = new List <string>(); dates = _screenshotCollection.GetDatesByFilter(comboBoxFilterType.Text, comboBoxFilterValue.Text); if (dates != null) { DateTime[] boldedDates = new DateTime[dates.Count]; for (int i = 0; i < dates.Count; i++) { boldedDates.SetValue(ConvertDateStringToDateTime(dates[i].ToString()), i); } monthCalendar.BoldedDates = boldedDates; } } } }
/// <summary> /// The method executed by the thread that loads screenshots into the data grid view. /// </summary> private void RunScreenshotLoad() { if (dataGridViewScreenshots.InvokeRequired) { dataGridViewScreenshots.Invoke(new RunScreenshotLoadDelegate(RunScreenshotLoad)); } else { foreach (string dateStr in _screenshotCollection.GetDatesByFilter(comboBoxFilterType.Text, comboBoxFilterValue.Text)) { if (DateTime.Parse(dateStr) >= dateTimePickerScreenshotsStartDateRange.Value && DateTime.Parse(dateStr) <= dateTimePickerScreenshotsEndDateRange.Value) { _screenshotCollection.LoadXmlFileAndAddScreenshots(dateStr, _screenshotsLoadLimit, out int nodeLoadCount, out int errorCode); _totalNodeLoadCount += nodeLoadCount; if (_totalNodeLoadCount >= _screenshotsLoadLimit) { return; } if (errorCode == 2) { return; } } } if (_screenshotCollection.Count == 0) { return; } dataGridViewScreenshots.DataSource = _screenshotCollection.GetScreenshots(dateTimePickerScreenshotsStartDateRange.Value, dateTimePickerScreenshotsEndDateRange.Value, dateTimePickerScreenshotsStartTimeRange.Value, dateTimePickerScreenshotsEndTimeRange.Value, comboBoxFilterType.Text, comboBoxFilterValue.Text); for (int i = 0; i < dataGridViewScreenshots.Columns.Count; i++) { dataGridViewScreenshots.Columns[i].Visible = false; } dataGridViewScreenshots.Columns["Date"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells; dataGridViewScreenshots.Columns["Time"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells; dataGridViewScreenshots.Columns["FilePath"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells; dataGridViewScreenshots.Columns["Encrypted"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells; dataGridViewScreenshots.Columns["Key"].Visible = true; dataGridViewScreenshots.Columns["Date"].Visible = true; dataGridViewScreenshots.Columns["Time"].Visible = true; dataGridViewScreenshots.Columns["FilePath"].Visible = true; dataGridViewScreenshots.Columns["Label"].Visible = true; dataGridViewScreenshots.Columns["Encrypted"].Visible = true; dataGridViewScreenshots.Columns["WindowTitle"].Visible = true; dataGridViewScreenshots.Columns["ProcessName"].Visible = true; dataGridViewScreenshots.Columns["Date"].DisplayIndex = 0; dataGridViewScreenshots.Columns["Time"].DisplayIndex = 1; dataGridViewScreenshots.Columns["Encrypted"].DisplayIndex = 2; dataGridViewScreenshots.Columns["Key"].DisplayIndex = 3; dataGridViewScreenshots.Columns["FilePath"].DisplayIndex = 4; dataGridViewScreenshots.Columns["ProcessName"].DisplayIndex = 5; dataGridViewScreenshots.Columns["WindowTitle"].DisplayIndex = 6; dataGridViewScreenshots.Columns["Label"].DisplayIndex = 8; // This needs to be 8 so it appears after "Window Title". I tried 7 but it's doesn't work. I'm not sure why. dataGridViewScreenshots.Columns["ProcessName"].HeaderText = "Process Name"; dataGridViewScreenshots.Columns["WindowTitle"].HeaderText = "Window Title"; } }