/// <summary> /// 翻译窗口失去焦点的时候。 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Stxt_trans_Leave(object sender, EventArgs e) { if (sdgv_items.SelectedRows.Count <= 0) { return; } if (sdgv_items.SelectedRows.Count > 1) { MessageBoxEx.Show("只能选择一行进行翻译,你现在选择了多行", "提示"); return; } var i = sdgv_items.SelectedRows.Count - 1; var key = this.sdgv_items.SelectedRows[i].Cells[1].Value.ToString(); var han = stxt_han.Text; var tran = stxt_trans.Text; if (key.IsNullOrEmpty()) { MessageBoxEx.Show("获取key失败", "提示"); return; } var model = ModelManager.Instance.Items.FirstOrDefault(x => x.Key == key); if (model == null) { MessageBoxEx.Show("根据key没有找到数据", "提示"); return; } if (model.Value != han) { MessageBoxEx.Show("搜索到的信息与选中的韩文不匹配", "提示"); return; } var hanLen = EncodingHelp.GetStringLength(han); var tranLen = EncodingHelp.GetStringLength(tran); if (tranLen > hanLen) { //这个汉化不能转换,提示用户 this.sdgv_items.SelectedRows[i].Cells[0].Value = Resource.PROCESS_WRONG; } else { this.sdgv_items.SelectedRows[i].Cells[0].Value = Resource.PROCESS_RIGHT; } this.sdgv_items.SelectedRows[i].Cells[3].Value = tran; lbl_otext.Text = hanLen.ToString(); label2.Text = tranLen.ToString(); model.Transform = tran; ModelManager.Instance.Save(); }
/// <summary> /// 按键盘的上下键给列表置入焦点时 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Sdgv_items_CellEnter(object sender, DataGridViewCellEventArgs e) { if (sdgv_items.SelectedRows.Count <= 0) { return; } if (sdgv_items.SelectedRows.Count > 1) { MessageBoxEx.Show("只能选择一行进行翻译,你现在选择了多行", "提示"); return; } var i = sdgv_items.SelectedRows.Count - 1; var han = this.sdgv_items.SelectedRows[i].Cells[2].Value.ToString(); var tran = this.sdgv_items.SelectedRows[i].Cells[3].Value.ToString(); var hanLen = EncodingHelp.GetStringLength(han); var tranLen = EncodingHelp.GetStringLength(tran); lbl_otext.Text = hanLen.ToString(); label2.Text = tranLen.ToString(); stxt_han.Text = han; stxt_trans.Text = tran; }
/// <summary> /// 导入翻译文件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Sbtn_tai_Click(object sender, EventArgs e) { var patch = OpenFile.OpenDialog("请选择翻译后的语言包", "翻译后的包(*.tbl)|*.tbl", "是否将文件导入到字库中"); if (string.IsNullOrWhiteSpace(patch)) { return; } var form = this; progress = new FormProgress(); progress.SetFormText("正在解析tbl文件"); var task = new Task(() => { var tblParse = new TblParse(patch); var models = tblParse.Parser(); form.Invoke((Action <string, int>)SetFormInfo, "导入汉化的进度", models.Count); var items = ModelManager.Instance.Items; //遍历已翻译过的 models = models.Where(x => x.Value.Length > 0).ToList(); foreach (var x in models) { //已form主线程的方式执行代码 form.Invoke((Action)SetFormProgress); var item = items.FirstOrDefault(_ => _.Key == x.Key); if (item == null) { continue; } var hanLen = EncodingHelp.GetStringLength(item.Value); var tranLen = EncodingHelp.GetStringLength(x.Value); if (tranLen > hanLen) { continue; } item.Transform = x.Value; } //保存字库 ModelManager.Instance.Save(); uiHelper.InitData(sdgv_items, GetPage); }); task.Start(); progress.ShowDialog(form); }
/// <summary> /// 行被选中 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Sdgv_items_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex > -1) { var value = this.sdgv_items.Rows[e.RowIndex].Cells[2].Value.ToString(); var trans = this.sdgv_items.Rows[e.RowIndex].Cells[3].Value.ToString(); stxt_han.Text = value; stxt_trans.Text = trans; lbl_otext.Text = EncodingHelp.GetStringLength(value).ToString(); label2.Text = EncodingHelp.GetStringLength(trans).ToString(); } }