using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Y.Utils.IOUtils.FileUtils; using Y.Utils.DataUtils.Collections; using Y.Utils.DelegateUtils; namespace Oreo.FileMan.Partials { public partial class FileEncryptPartial : UserControl { public FileEncryptPartial() { InitializeComponent(); } /// /// 文件批量加密 /// /// /// private void BtFileEncrypt_Click(object sender, EventArgs e) { ((Button)sender).Enabled = false; string password = TbFileEncryptPassword.Text; Task.Factory.StartNew(() => { int index = 0; foreach (DataGridViewRow row in DgvFileEncryptList.Rows) { string file = row.Cells["CoFileEncryptName"].Value.ToString(); int flag; UIFileEncryptStatus(index, "分析文件..."); if ((flag = FileEncryptTool.Encrypt(file, file + FileEncryptTool.FileExt, password, UIFileEncryptProgress, index)) > 0) { UIFileEncryptStatus(index, "成功"); if (CbFileEncryptDelete.Checked) { FileTool.Delete(file); } } else { UIFileEncryptStatus(index, "失败:" + flag); } index++; } BeginInvoke(new Action(() => { ((Button)sender).Enabled = true; })); }); } /// /// 添加文件 /// /// /// private void BtFileEncryptAdd_Click(object sender, EventArgs e) { OpenFileDialog fileDialog = new OpenFileDialog(); fileDialog.Title = "请选择要加密的文件"; fileDialog.Filter = "所有文件|*.*"; fileDialog.Multiselect = true; if (fileDialog.ShowDialog() == DialogResult.OK) { if (ListTool.HasElements(fileDialog.FileNames)) foreach (var file in fileDialog.FileNames) { DgvFileEncryptList.Rows.Add(new object[] { file, "准备" }); } } } /// /// 批量导入文件 /// /// /// private void BtFileEncryptAdds_Click(object sender, EventArgs e) { FolderBrowserDialog dialog = new FolderBrowserDialog(); dialog.Description = "请选择要导入的文件路径"; if (dialog.ShowDialog() == DialogResult.OK) { string foldPath = dialog.SelectedPath; List fileList = FileTool.GetAllFile(foldPath); if (ListTool.HasElements(fileList)) { fileList.ForEach(x => { DgvFileEncryptList.Rows.Add(new object[] { x, "准备" }); }); } } } /// /// 清空文件列表 /// /// /// private void BtFileEncryptClear_Click(object sender, EventArgs e) { DgvFileEncryptList.Rows.Clear(); } /// /// 显示当前加密的文件进度 /// /// /// private void UIFileEncryptProgress(object sender, ProgressEventArgs e) { BeginInvoke(new Action(() => { DgvFileEncryptList.Rows[(int)sender].Cells["CoFileEncryptStatus"].Value = (e.Current * 100 / e.Total) + " %"; })); } /// /// 更新文件状态 /// /// /// private void UIFileEncryptStatus(int index, string status) { BeginInvoke(new Action(() => { DgvFileEncryptList.Rows[index].Cells["CoFileEncryptStatus"].Value = status; })); } } }