Ohne das jetzt getestet zu haben fällt mir doch einiges auf...
private void btnFindSource_Click(object sender, EventArgs e)
{
{ <--
lstAgent.Clear();
FindSourceFolder();
lstAgent.Select();
} <--
}
Was sind das für überflüssige Klammern?
private string FindSourceFolder()
{
FolderBrowserDialog ZipSourceFolder = new FolderBrowserDialog();
var folder = String.Empty;
var foldersToZip = String.Empty;
try
{
if (ZipSourceFolder.ShowDialog() == DialogResult.OK)
{
folder = Path.GetFullPath(ZipSourceFolder.SelectedPath);
lblPath.Text = ($"Actual Path: " + folder);
actualPath = folder;
foreach (var item in folder)
{
foldersToZip += Path.GetDirectoryName(folder).ToString();
}
}
ShowFolderSelection(folder);
return folder;
}
catch (System.IO.DirectoryNotFoundException)
{
MessageBox.Show("The selected directory could not be found!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
catch (UnauthorizedAccessException)
{
MessageBox.Show("Access to the selected directory is denied!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
catch (Exception e)
{
MessageBox.Show("Unexpected error: " + e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
FolderBrowserDialog sollte immer mit using verwendet werden (wie alle Dialoge).
using(FolderBrowserDialog ZipSourceFolder = new FolderBrowserDialog())
{
... dein Code ...
}
if (ZipSourceFolder.ShowDialog() == DialogResult.OK)
Beim Aufruf von ShowDialog solltest Du den Owner mitgeben (in diesem Falle 'this'). Das ist wahrscheinlich die Ursache Deines Problems...
if (ZipSourceFolder.ShowDialog(this) == DialogResult.OK)
Da gibt es noch vieles mehr am Code auszusetzen (leere Methode, wildes mischen von var und konkreter Typangabe usw.).
Nur weil es 'irgendwie' funktioniert muss es nicht richtig/sinnvoll sein...