private void mDeleteMenuItem_Click(object sender, EventArgs e) { if (MessageBox.Show("确定要删除这些项目吗?", "确认", MessageBoxButtons.OKCancel) == DialogResult.OK) { DeleteContentsReq req = new DeleteContentsReq(); req.ContentPaths = new List <string>(); foreach (ListViewItem item in mContentList.SelectedItems) { string contentPath = Path.Combine(mCurrentDirectory, item.Text); req.ContentPaths.Add(contentPath); } mClient.SendRequest(ProtocolTypes.TYPE_DELETE_CONTENTS, req); } }
public override void ProcessRequest() { DeleteContentsReq req = mSocketTalker.ReceiveObject <DeleteContentsReq>(); DeleteContentsRes res = new DeleteContentsRes(); res.DeleteResults = new string[req.ContentPaths.Count]; for (int i = 0; i < req.ContentPaths.Count; i++) { Content content = new Content(req.ContentPaths[i]); try { switch (content.Type) { case Content.TYPE_NOT_FOUND: throw new KnownException("此路径所代表的不是一个文件或目录。"); case Content.TYPE_FILE: File.Delete(content.Path); break; case Content.TYPE_DRIVER: throw new KnownException("此路径所代表的是一个驱动器。"); case Content.TYPE_DIRECTORY: Directory.Delete(content.Path, true); break; } } catch (Exception e) { res.ErorrOccured = true; res.DeleteResults[i] = content.Path + " " + e.Message; } } mSocketTalker.SendInt(ProtocolTypes.TYPE_DELETE_CONTENTS); mSocketTalker.SendObject(res); }