/// <summary> /// 更新状态栏 /// </summary> private void UpdateStatus(Model.DoState doState) { this.toolStripStatusLabel2.Text = doState.ToString(); this.toolStripProgressBar1.Value = (int)doState.DoPercent; if (doState.CurrentCount == doState.SumCount) { this.btnSave.Enabled = true; this.txtLog.AppendText("文件已全部处理完毕!" + Environment.NewLine); this.dgFiles.DataSource = XCLNetTools.DataSource.DataTableHelper.ToDataTable(this.v_fileBLL.GetAllList()); } }
/// <summary> /// 处理文件回调函数 /// </summary> private void GetResultCallBack(IAsyncResult asyncResult) { lock (this.lockObject) { Model.DoState doState = asyncResult.AsyncState as Model.DoState; AsyncResult result = (AsyncResult)asyncResult; Delegate_DoIt delegateDoit = (Delegate_DoIt)result.AsyncDelegate; var model = delegateDoit.EndInvoke(asyncResult); switch (model.ProcessState) { case (int)DataLayer.Common.DataEnum.FileReplace_File_ProcessStateEnum.处理失败: doState.FailCount += 1; break; case (int)DataLayer.Common.DataEnum.FileReplace_File_ProcessStateEnum.处理成功: doState.SuccessCount += 1; break; case (int)DataLayer.Common.DataEnum.FileReplace_File_ProcessStateEnum.无需处理: doState.IgnoreCount += 1; break; } //更新model this.fileBLL.Update(model); if (this.InvokeRequired) { this.Invoke(new Delegate_UpdateStatus(this.UpdateStatus), new object[] { doState }); } else { this.UpdateStatus(doState); } } }
/// <summary> /// 执行 /// </summary> private void btnSave_Click(object sender, EventArgs e) { var lst = this.fileBLL.GetAllList(); #region 合法性验证 if (null == lst || lst.Count == 0) { DevExpress.XtraEditors.XtraMessageBox.Show("请先选择待处理的文件!", "系统提示"); return; } if ((null == this.dataGridRuleConfig.Rows || this.dataGridRuleConfig.Rows.Count == 0) && string.IsNullOrEmpty(this.txtFileFirstName.Text) && string.IsNullOrEmpty(this.txtFileLastName.Text)) { DevExpress.XtraEditors.XtraMessageBox.Show("当前不需要处理任何文件,请先配置相关信息!", "系统提示"); return; } if (!string.IsNullOrEmpty(this.txtOutPutPath.Text)) { if (XCLNetTools.FileHandler.FileDirectory.DirectoryExists(this.txtOutPutPath.Text)) { //检查是否有文件 if (!XCLNetTools.FileHandler.FileDirectory.IsEmpty(this.txtOutPutPath.Text)) { if (DevExpress.XtraEditors.XtraMessageBox.Show("您指定的输出目录不是空目录,是否继续?", "系统提示", MessageBoxButtons.YesNo) == DialogResult.No) { return; } } } else { if (!XCLNetTools.FileHandler.FileDirectory.MakeDirectory(this.txtOutPutPath.Text)) { DevExpress.XtraEditors.XtraMessageBox.Show("输出目录不存在,请选择有效的输出目录!", "系统提示"); return; } } } if (!lst.Exists(k => !k.IsDone)) { DevExpress.XtraEditors.XtraMessageBox.Show("文件都已处理,请重新打开要处理的文件!", "系统提示"); return; } #endregion 合法性验证 #region 将选项保存至配置文件中 var ruleIdLst = new List <int>(); var config = this.userSettingBLL.GetFirstModel() ?? new DataLayer.Model.UserSetting(); if (null != this.dataGridRuleConfig.Rows && this.dataGridRuleConfig.Rows.Count > 0) { for (var i = 0; i < this.dataGridRuleConfig.Rows.Count; i++) { ruleIdLst.Add(XCLNetTools.Common.DataTypeConvert.ToInt(this.dataGridRuleConfig.Rows[i].Cells["grid_RuleConfigID"].Value)); } } this.replaceSetting.OutPutPath = this.txtOutPutPath.Text; this.replaceSetting.PrefixName = this.txtFileFirstName.Text; this.replaceSetting.SuffixName = this.txtFileLastName.Text; this.replaceSetting.IsKeepDataFormat = this.ckExcelOptionIsKeepDataFormat.Checked; this.replaceSetting.IsKeepFormula = this.ckExcelOptionIsKeepFormula.Checked; this.replaceSetting.RuleConfigIds = ruleIdLst; config.FileReplaceSetting = XCLNetTools.Serialize.JSON.Serialize(this.replaceSetting); this.userSettingBLL.Add(config); #endregion 将选项保存至配置文件中 #region 任务处理 this.btnSave.Enabled = false; Model.DoState doState = new Model.DoState(); doState.SumCount = lst.Count; foreach (var m in lst) { this.SetTextLogValue(string.Format("正在处理文件:{0}", m.FileName)); Delegate_DoIt dg = new Delegate_DoIt(this.DoIt); IAsyncResult result = dg.BeginInvoke(m, new AsyncCallback(this.GetResultCallBack), doState); } #endregion 任务处理 }
/// <summary> /// 初始化状态栏 /// </summary> private void InitStatus() { Model.DoState doState = new Model.DoState(); this.toolStripStatusLabel2.Text = doState.ToString(); this.toolStripProgressBar1.Value = (int)doState.DoPercent; }
/// <summary> /// 执行 /// </summary> private void btnSave_Click(object sender, EventArgs e) { bool isRegexp = this.ckIsRegexp.Checked; bool isContent = this.ckIsContent.Checked; bool isFileName = this.ckIsFileName.Checked; bool isNotIgnoreLowerCase = this.ckIsNotIgnoreLowerCase.Checked; bool isWhole = this.ckIsWhole.Checked; #region 合法性验证 if (null == this.dgFiles.DataSource) { MessageBox.Show("请先选择待处理的文件!"); return; } if (!isFileName && !isContent) { MessageBox.Show("查找内容中的【文件名】和【文件内容】至少选一个!"); return; } if (string.IsNullOrEmpty(this.txtOldValue.Text)) { MessageBox.Show("查找内容不能为空!"); return; } if (!XCLNetTools.FileHandler.FileDirectory.DirectoryExists(this.txtOutPutPath.Text)) { if (!XCLNetTools.FileHandler.FileDirectory.MakeDirectory(this.txtOutPutPath.Text)) { MessageBox.Show("输出目录不存在,请选择有效的输出目录!"); return; } } List<Model.FileInfo> lstFiles = this.dgFiles.DataSource as List<Model.FileInfo>; if (null != lstFiles && lstFiles.Count > 0) { if (!lstFiles.Exists(k => k.是否已处理 == "否")) { MessageBox.Show("文件都已处理,请重新打开要处理的文件!"); return; } } #endregion #region 将选项保存至配置文件中 List<string> searchOptions = new List<string>(); if (this.ckIsRegexp.Checked) { searchOptions.Add(this.ckIsRegexp.Text); } if (this.ckIsContent.Checked) { searchOptions.Add(this.ckIsContent.Text); } if (this.ckIsFileName.Checked) { searchOptions.Add(this.ckIsFileName.Text); } if (this.ckIsNotIgnoreLowerCase.Checked) { searchOptions.Add(this.ckIsNotIgnoreLowerCase.Text); } if (this.ckIsWhole.Checked) { searchOptions.Add(this.ckIsWhole.Text); } CommonHelper.ConfigHelper.SetBaseConfigValue(this.SubAssemblyName, "SearchOptions", string.Join(",", searchOptions.ToArray())); CommonHelper.ConfigHelper.SetBaseConfigValue(this.SubAssemblyName, "OutPutPath", this.txtOutPutPath.Text); #endregion #region 任务处理 this.SetControlEnable(false); Model.DoState doState = new Model.DoState(); doState.SumCount = this.dgFiles.Rows.Count; for (int i = 0; i < this.dgFiles.Rows.Count; i++) { DataGridViewRow dr = this.dgFiles.Rows[i]; Delegate_DoIt dg = new Delegate_DoIt(DoIt); IAsyncResult result = dg.BeginInvoke(dr, new AsyncCallback(this.GetResultCallBack), doState); } #endregion }
/// <summary> /// 执行 /// </summary> private void btnSave_Click(object sender, EventArgs e) { var lst = this.fileBLL.GetAllList(); #region 合法性验证 if (null == lst || lst.Count == 0) { MessageBox.Show("请先选择待处理的文件!"); return; } if (!string.IsNullOrEmpty(this.txtOutPutPath.Text)) { if (XCLNetTools.FileHandler.FileDirectory.DirectoryExists(this.txtOutPutPath.Text)) { //检查是否有文件 if (!XCLNetTools.FileHandler.FileDirectory.IsEmpty(this.txtOutPutPath.Text)) { if (MessageBox.Show("您指定的输出目录不是空目录,是否继续?", "系统提示", MessageBoxButtons.YesNo) == DialogResult.No) { return; } } } else { if (!XCLNetTools.FileHandler.FileDirectory.MakeDirectory(this.txtOutPutPath.Text)) { MessageBox.Show("输出目录不存在,请选择有效的输出目录!"); return; } } } if (!lst.Exists(k => !k.IsDone)) { MessageBox.Show("文件都已处理,请重新打开要处理的文件!"); return; } #endregion 合法性验证 #region 将选项保存至配置文件中 var config = this.userSettingBLL.GetFirstModel() ?? new DataLayer.Model.UserSetting(); this.ReplaceSetting = this.ReplaceSetting ?? new DataLayer.Model.FileReplaceSetting(); this.ReplaceSetting.OutPutPath = this.txtOutPutPath.Text; this.ReplaceSetting.PrefixName = this.txtFileFirstName.Text; this.ReplaceSetting.SuffixName = this.txtFileLastName.Text; config.FileReplaceSetting = XCLNetTools.Serialize.JSON.Serialize(this.ReplaceSetting); this.userSettingBLL.Add(config); #endregion 将选项保存至配置文件中 #region 任务处理 this.btnSave.Enabled = false; Model.DoState doState = new Model.DoState(); doState.SumCount = lst.Count; foreach (var m in lst) { Delegate_DoIt dg = new Delegate_DoIt(this.DoIt); IAsyncResult result = dg.BeginInvoke(m, new AsyncCallback(this.GetResultCallBack), doState); } #endregion 任务处理 }