/// <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;
        }