void Btn_export_keysClick(object sender, EventArgs e) { //можно было более элегантно, но и так сойдет if (bc == null) { walletConnect(); } if (bc != null) { //если юзверь говорит, что кошелек зашифрован if (checkBox_locked.Checked) { //пусть по 1 секунде на аккаунт int unlock_timeout = bc.GetAccountsCount() * 2; try { bc.WalletPassphrase(textBox_password.Text, unlock_timeout); } catch (Exception ex) { showHelp("Пароль не подходит или кошелек уже разблокирован"); } } bool success = false; Dictionary <string, string> keys = new Dictionary <string, string>(); this.SuspendLayout(); try { keys = bc.GetAccountsKeys(); success = true; } catch (Exception ex) { //Debug.Print("Отловлена ошибка: " + ex.Message); showHelp("Что-то пошло не так:\n\n" + ex.Message); } this.ResumeLayout(); if (success) { if (saveKeysDialog.ShowDialog() == DialogResult.OK) { string path = saveKeysDialog.FileName; string result = "Экспорт приватных ключей, QTPrivateSaver v." + Application.ProductVersion + Environment.NewLine; foreach (string ac_name in keys.Keys) { result += Environment.NewLine + ac_name + ": " + keys[ac_name]; } using (FileStream fstream = new FileStream(path, FileMode.OpenOrCreate)) { // преобразуем строку в байты byte[] array = System.Text.Encoding.Default.GetBytes(result); // запись массива байтов в файл try { fstream.Write(array, 0, array.Length); //проверка, успешно ли записался файл if (File.Exists(path)) { showHelp("Экспортирвано!"); } else { showHelp("Что-то пошло не так, не удалось сохранить файл.\nПопробуйте запустить от имени администратора"); } } catch (Exception ex) { showHelp("Произошла ошибка:\n\n" + ex.Message); } } } } } else { showHelp("Не удалось подключиться к кошельку"); } }