Я не уверен, что это является причиной проблемы. Но я DO знаю, что это достаточно большая проблема, чтобы заслужить ответ, потому что, если она не вызывает вашу проблему сейчас , она вызовет ее для вас в будущем .
При сравнении строк учитывается регистр. Что означает, в вашей строке кода:
if(f.Trim() == nameRepair(form.bunifuTextbox1.text).Trim())
... вы проверяете, совпадают ли строки, включая чувствительность к регистру. Теперь мы знаем, что ваша функция nameRepair явно добавляет путь:
return @"C:\DiaryFiles\" + suspectfile + ".akb";
... все, что нужно для того, чтобы ваш другой файл имел имя / путь, например:
c:\diaryfiles\********.akb
... и ваше сравнение не сработает.
Всякий раз, когда я вижу сравнение if (string == string), если оно не проверяет строку "", я рассматриваю это как ожидающую ошибку. Вместо этого вы хотите что-то вроде:
if (stringA.Equals(stringB, StringComparison.OrdinalIgnoreCase))
... или аналогичный. Не выглядит так хорошо; однако, также не содержит возможной ошибки.