public ResolveConflictWhenCommitForm(CommitCompareResult compareResult, CommitExcelInfo localExcelInfo, CommitExcelInfo svnExcelInfo) { InitializeComponent(); // 记录各对比类型功能区所包含的控件 _partControls = new Dictionary <string, _PartControls>(); // 主语言译文不同功能区 _PartControls diffInfoPartControls = new _PartControls(); diffInfoPartControls.PartName = _PART_NAME_DIFF_INFO; diffInfoPartControls.DataGridView = dgvDiffDefaultLanguageInfo; diffInfoPartControls.ComboBox = cmbDiffInfoUnifiedResolveConflictWay; diffInfoPartControls.CheckBox = chkDiffInfoIgnoreSvnRevisionChange; _partControls.Add(_PART_NAME_DIFF_INFO, diffInfoPartControls); // 本地表新增Key功能区 _PartControls localAddKeyPartControls = new _PartControls(); localAddKeyPartControls.PartName = _PART_NAME_LOCAL_ADD_KEY; localAddKeyPartControls.DataGridView = dgvLocalAddKeyInfo; localAddKeyPartControls.ComboBox = cmbLocalAddKeyInfoUnifiedResolveConflictWay; localAddKeyPartControls.CheckBox = chkLocalAddKeyInfoIgnoreSvnRevisionChange; _partControls.Add(_PART_NAME_LOCAL_ADD_KEY, localAddKeyPartControls); // SVN表新增Key功能区 _PartControls svnAddKeyPartControls = new _PartControls(); svnAddKeyPartControls.PartName = _PART_NAME_SVN_ADD_KEY; svnAddKeyPartControls.DataGridView = dgvSvnAddKeyInfo; svnAddKeyPartControls.ComboBox = cmbSvnAddKeyInfoUnifiedResolveConflictWay; svnAddKeyPartControls.CheckBox = chkSvnAddKeyInfoIgnoreSvnRevisionChange; _partControls.Add(_PART_NAME_SVN_ADD_KEY, svnAddKeyPartControls); // 设置用于统一处理差异处理方式的ComboBox选项 foreach (_PartControls onePartControls in _partControls.Values) { // 设置选项内容 onePartControls.ComboBox.Items.AddRange(AppValues.RESOLVE_COMMIT_DIFF_WAYS); // 绑定点击响应事件 onePartControls.ComboBox.SelectedIndexChanged += _OnChangedUnifiedResolveConflictWay; } // 设置用于让用户选择每条差异处理方式的DataGridViewComboBoxColumn选项 foreach (_PartControls onePartControls in _partControls.Values) { DataGridViewComboBoxColumn comboBoxColumn = onePartControls.DataGridView.Columns[onePartControls.PartName + _RESOLVE_CONFLICT_WAY_COLUMN_NAME] as DataGridViewComboBoxColumn; comboBoxColumn.Items.AddRange(AppValues.RESOLVE_COMMIT_DIFF_WAYS); } _localExcelInfo = localExcelInfo; _lastSvnExcelInfo = svnExcelInfo; _newestSvnExcelInfo = svnExcelInfo; _compareResult = compareResult; _InitDataGridView(compareResult); }
// 当更改了ComboBox的统一处理方式时触发 private void _OnChangedUnifiedResolveConflictWay(object sender, EventArgs e) { ComboBox comboBox = sender as ComboBox; _PartControls partControl = _GetPartControlsByOneControl(comboBox); DataGridView dataGridView = partControl.DataGridView; object selectedValue = comboBox.SelectedItem; bool isIgnoreChangeBySvnRevision = (_compareResult.LocalFileRevision != _compareResult.SvnFileRevision && partControl.CheckBox.Checked == true); int rowCount = dataGridView.Rows.Count; string PART_RESOLVE_CONFLICT_WAY_COLUMN_NAME = partControl.PartName + _RESOLVE_CONFLICT_WAY_COLUMN_NAME; string PART_IS_CHANGED_BY_SVN_REVISION_COLUMN_NAME = partControl.PartName + _IS_CHANGED_BY_SVN_REVISION_COLUMN_NAME; for (int i = 0; i < rowCount; ++i) { if (isIgnoreChangeBySvnRevision == true && !string.IsNullOrEmpty(dataGridView.Rows[i].Cells[PART_IS_CHANGED_BY_SVN_REVISION_COLUMN_NAME].Value as string)) { continue; } DataGridViewComboBoxCell comboBoxCell = dataGridView.Rows[i].Cells[PART_RESOLVE_CONFLICT_WAY_COLUMN_NAME] as DataGridViewComboBoxCell; comboBoxCell.Value = selectedValue; } }