/// <summary> /// Строит ассоциативное поле для выбранного слова. /// </summary> private void btnFieldForSelectedWord_Click(object sender, EventArgs e) { Cursor = Cursors.WaitCursor; //проверяем списки с экспериментальными данными на корректность длины if (CheckLists()) { dgvWords.Rows.Clear(); int index = AllWords.IndexOf(cmbAllWords.SelectedItem.ToString()); _field = new FieldConstruction(AllWords, Definitions, FreeAssociations, DirectAssociations, Similarities, Opposities); _field.InitField(cmbAllWords.SelectedItem.ToString()); //строим ассоциативное поле для выбранного слова //инициализируем параметры ассоциативного поля int NumOfSwitches = 0; int NumOfAllSwitches = 0; int NumOfContactors = _field.Contactors.Count; int NumOfAllContactors = _field.NumOfContactors; double NumOfSwAmongMarkems = 0; double NumOfConAmongMarkems = 0; double NumOfAllSwAmongMarkems = 0; double NumOfAllConAmongMarkems = 0; //вычисляем параметры for (int i = 0; i < AllWords.Count; i++) { if (_field.AllWordsAsSwitches[AllWords[i]] != 0 || _field.AllWordsAsContactors[AllWords[i]] != 0) { dgvWords.Rows.Add(AllWords[i], _field.AllWordsAsSwitches[AllWords[i]], _field.AllWordsAsContactors[AllWords[i]], _field.AllWordsAsSwitches[AllWords[i]] + _field.AllWordsAsContactors[AllWords[i]]); if (_field.AllWordsAsSwitches[AllWords[i]] != 0) { NumOfSwitches++; NumOfAllSwitches += _field.AllWordsAsSwitches[AllWords[i]]; if (Markems.IndexOf(AllWords[i]) != -1) { NumOfSwAmongMarkems++; NumOfAllSwAmongMarkems += _field.AllWordsAsSwitches[AllWords[i]]; } } if (_field.AllWordsAsContactors[AllWords[i]] != 0 && Markems.IndexOf(AllWords[i]) != -1) { NumOfConAmongMarkems++; NumOfAllConAmongMarkems += _field.AllWordsAsContactors[AllWords[i]]; } } } double NumOfMarkemsInAll = NumOfSwAmongMarkems + NumOfConAmongMarkems; double NumOfAllMarkemsInAll = NumOfAllSwAmongMarkems + NumOfAllConAmongMarkems; double ShareOfMarkemsInSwitches, ShareOfMarkemsInContactors; double ShareOfMarkemsInAllSwitches, ShareOfMarkemsInAllContactors; double ShareOfMarkemsInAll, ShareOfAllMarkemsInAll; if (NumOfSwitches == 0) { ShareOfMarkemsInSwitches = 0; ShareOfMarkemsInAllSwitches = 0; } else { ShareOfMarkemsInSwitches = NumOfSwAmongMarkems / NumOfSwitches; ShareOfMarkemsInAllSwitches = NumOfAllSwAmongMarkems / NumOfAllSwitches; } if (NumOfContactors == 0) { ShareOfMarkemsInContactors = 0; ShareOfMarkemsInAllContactors = 0; } else { ShareOfMarkemsInContactors = NumOfConAmongMarkems / NumOfContactors; ShareOfMarkemsInAllContactors = NumOfAllConAmongMarkems / NumOfAllContactors; } if (NumOfSwitches == 0 && NumOfContactors == 0) { ShareOfMarkemsInAll = 0; ShareOfAllMarkemsInAll = 0; } else { ShareOfMarkemsInAll = NumOfMarkemsInAll / (NumOfSwitches + NumOfContactors); ShareOfAllMarkemsInAll = NumOfAllMarkemsInAll / (NumOfAllSwitches + NumOfAllContactors); } //выводим полученные параметры в DataGridView dgvAllWords.Rows[index].Cells[1].Value = NumOfSwitches.ToString() + " (" + NumOfAllSwitches.ToString() + ")"; dgvAllWords.Rows[index].Cells[2].Value = NumOfContactors.ToString() + " (" + NumOfAllContactors.ToString() + ")"; dgvAllWords.Rows[index].Cells[3].Value = (NumOfSwitches + NumOfContactors).ToString() + " (" + (NumOfAllSwitches + NumOfAllContactors).ToString() + ")"; dgvAllWords.Rows[index].Cells[4].Value = String.Format("{0:0.00}", ShareOfMarkemsInSwitches) + " (" + String.Format("{0:0.00}", ShareOfMarkemsInAllSwitches) + ")"; dgvAllWords.Rows[index].Cells[5].Value = String.Format("{0:0.00}", ShareOfMarkemsInContactors) + " (" + String.Format("{0:0.00}", ShareOfMarkemsInAllContactors) + ")"; dgvAllWords.Rows[index].Cells[6].Value = String.Format("{0:0.00}", ShareOfMarkemsInAll) + " (" + String.Format("{0:0.00}", ShareOfAllMarkemsInAll) + ")"; if (_field.Steps == 0) { dgvAllWords.Rows[index].Cells[7].Value = (_field.Steps) + " " + (_field.Levels); } else { dgvAllWords.Rows[index].Cells[7].Value = (_field.Steps) + " " + (_field.Levels + 1); } btnExportToExcel.Enabled = true; dgvAllWords.Rows[index].Selected = true; dgvAllWords.FirstDisplayedScrollingRowIndex = index; //делаем запрос на сохранение полученного ассоциативного поля в таблицу MS Excel var confirmResult = MessageBox.Show("Хотите отобразить полученную таблицу в Microsoft Excel?", "Сохранение ассоциативного поля", MessageBoxButtons.YesNo); //если пользователь отвечает "да", то полученное поле экспортируем в таблицу MS Excel if (confirmResult == DialogResult.Yes) { _resultWriter.ExportField(_field.Field); } } Cursor = Cursors.Default; }