/// <summary> /// 削除 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnDelete_Click(object sender, EventArgs e) { try { // 件数確認 if (cboLabel.Items.Count == 0) { // コンボボックスに価が存在しない場合は中断 return; } // 削除確認 if (CommonUtil.PutMessage( CommonEnums.MessageType.Confirm, "選択中の項目を削除します。\n設定されたデータが全て削除されます。よろしいですか?") == DialogResult.No) { // 削除しない場合は中断 return; } // アイテムを削除 TranslateInfo.SettingDs.Tables[Util.TITLE_TABLE] .Rows.Remove(((DataRowView)cboLabel.SelectedItem).Row); txtLabel.Text = string.Empty; nudReadMultiples.Value = 2; lblX.Text = "0"; lblY.Text = "0"; lblW.Text = "0"; lblH.Text = "0"; // タイトルテーブルか名詞テーブルのどちらかに1件でもデータが存在する場合 if (TranslateInfo.SettingDs.Tables[Util.TITLE_TABLE].Rows.Count > 0 || TranslateInfo.SettingDs.Tables[Util.NOUN_TABLE].Rows.Count > 0) { // 削除後もアイテムが残っている場合は設定ファイルを更新 Util.WriteXml(TranslateInfo.SettingDs, TranslateInfo.ConfigFilePath); } else { // アイテムが1件も存在しない場合は設定ファイルごと削除 File.Delete(TranslateInfo.ConfigFilePath); if (!Util.IsExistsProcessData()) { ProcessNameInfo.DeleteProcessName(); } } // 他にアイテムが存在する場合は先頭を選択 if (cboLabel.Items.Count > 0) { cboLabel.SelectedIndex = -1; cboLabel.SelectedIndex = 0; } } catch (Exception ex) { CommonUtil.PutMessage(CommonEnums.MessageType.Error, ex.Message); } }
/// <summary> /// 閉じる /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnClose_Click(object sender, EventArgs e) { try { // フィルター中の場合は解除する if (historyDispDt.Rows.Count > 0) { if (btnFilter.Text == LBL_FILTER_OFF) { var dt = (DataTable)dgvHistoryList.DataSource; dt.PrimaryKey = new DataColumn[] { dt.Columns[HistoryDispColumns.Id] }; historyDispDt.Merge(dt); historyDispDt.AcceptChanges(); } } if (Util.IsSameValue(historyOrgDt, historyDispDt)) { // データが同じだったら閉じる Close(); return; } // 確認メッセージ var result = CommonUtil.PutMessage(CommonEnums.MessageType.Confirm, "編集されたデータが存在します。保存しますか?", true); switch (result) { case DialogResult.Yes: // 入力チェック var orgTextRequiredErr = historyDispDt.AsEnumerable() .Where(w => string.IsNullOrEmpty(w[HistoryDispColumns.OriginalText].ToString())) .Select(s => new { err = true, index = historyDispDt.Rows.IndexOf(s) }).FirstOrDefault(); if (orgTextRequiredErr != null && orgTextRequiredErr.err) { CommonUtil.PutMessage(CommonEnums.MessageType.Error, "原文の入力は必須です。"); dgvHistoryList.ClearSelection(); dgvHistoryList.FirstDisplayedScrollingRowIndex = orgTextRequiredErr.index; dgvHistoryList[OriginalText.Name, orgTextRequiredErr.index].Selected = true; return; } var resultTextRequiredErr = historyDispDt.AsEnumerable() .Where(w => string.IsNullOrEmpty(w[HistoryDispColumns.ResultText].ToString())) .Select(s => new { err = true, index = historyDispDt.Rows.IndexOf(s) }).FirstOrDefault(); if (resultTextRequiredErr != null && resultTextRequiredErr.err) { CommonUtil.PutMessage(CommonEnums.MessageType.Error, "訳文の入力は必須です。"); dgvHistoryList.ClearSelection(); dgvHistoryList.FirstDisplayedScrollingRowIndex = resultTextRequiredErr.index; dgvHistoryList[ResultText.Name, resultTextRequiredErr.index].Selected = true; return; } // 保存処理 var historyColumns = Util.CreateHistoryDataTable() .Columns.Cast <DataColumn>() .Select(s => s.ColumnName).ToArray(); // 書き込み用に列を抽出 var dt = historyDispDt.DefaultView.ToTable(Util.HISTORY_TABLE, false, historyColumns); // 履歴フォルダにデータが存在しない場合 if (dt.Rows.Count == 0) { // ファイルが存在する場合はファイルを削除 if (File.Exists(historyPath)) { File.Delete(historyPath); if (!Util.IsExistsProcessData()) { ProcessNameInfo.DeleteProcessName(); } } int fileCount = Directory.GetFileSystemEntries( "history", "*.cfg", SearchOption.TopDirectoryOnly).Length; if (fileCount == 0) { Directory.Delete("history"); } } else { // 出力 Util.WriteXml(dt, historyPath); } Close(); break; case DialogResult.No: // 保存せずに終了 Close(); break; } } catch (Exception ex) { CommonUtil.PutMessage(CommonEnums.MessageType.Error, ex.Message); } }