Вы едите исключение и теряете все сочные детали. Попробуйте изменить свой блок catch
на что-то вроде этого, чтобы увидеть, что происходит:
catch (Exception ex)
{
MessageBox.Show(this, ex.ToString(), "Error Saving Image", MessageBoxIcons.Error);
}
Кроме того, рассмотрите возможность ведения некоторого ведения журнала (для средства просмотра событий и / или текстового файла. Это позволит вам иметь простое окно сообщения, но со всеми сочными подробностями, которые можно будет извлечь из события после события.
catch (Exception ex)
{
MessageBox.Show(this, ex.Message, "Error Saving Image", MessageBoxIcon.Error);
// _logger is a private field on this class in this case.
_logger.Log(ex, string.Format("Saving image to {0}", dialog.Filename))
}
Вы могли бы посмотреть Log4net среди прочего на фактическое ведение журнала, но, по крайней мере, написать класс для записать подробности исключения в просмотрщик событий .