/// <summary>
        /// Обработчик нажатия кнопки "Проверить текст"
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonCheck_Click(object sender, EventArgs e)
        {
            dataGridViewBasicResult.Rows.Clear();
            dataGridViewExtraResult.Rows.Clear();
            string text = "Введите текст для анализа.";

            if (richTextBoxText.Text == text)
            {
                MessageBox.Show("Ошибка анализа! Введите в пустое поле текст и попробуйте еще раз.", "Сообщение об ошибке");
            }
            else
            {
                Text enterText = new Text(richTextBoxText.Text);
                richTextBoxText.Text = enterText.fullText;
                ExtremistAnalysisText analysis = new ExtremistAnalysisText(enterText);
                textsResult           = analysis.AvailabilityExtremistText(textVocabulary);
                phrasesResult         = analysis.AvailabilityExtremistPhrases(phraseVocabulary);
                extremistPhrasesColor = RandomColors(textsResult.Count);
                if (textsResult.Count > 0 || phrasesResult.indexSpacesOfStartUsingPhrases.Count > 0)
                {
                    buttonCancell.Enabled = true;
                    buttonCheck.Enabled   = false;
                    if (textsResult.Count == 0)
                    {
                        MessageBox.Show("Совпадений с экстремистскими текстами из базы данных не найдено, но были найдены экстремистские фразы.", "Результат анализа");
                        tabControlProcessing.SelectedIndex = 1;
                    }
                    else if (phrasesResult.indexSpacesOfStartUsingPhrases.Count == 0)
                    {
                        MessageBox.Show("Совпадений с экстремистскими фразами из базы данных не найдено, но были найдены совпадения с экстремистскими текстами.", "Результат анализа");
                        tabControlProcessing.SelectedIndex = 0;
                    }
                    for (int indexResult = 0; indexResult < textsResult.Count; indexResult++)
                    {
                        dataGridViewBasicResult.Rows.Add();
                        dataGridViewBasicResult.Rows[indexResult].Cells[0].Value =
                            textVocabulary.texts.IndexOf(textsResult[indexResult].usingExtremistText) + 1;
                        dataGridViewBasicResult.Rows[indexResult].Cells[1].Value = "Начало использованного текста - \"" +
                                                                                   textsResult[indexResult].usingExtremistText.startWords + "...\", конец текста - \"..." +
                                                                                   textsResult[indexResult].usingExtremistText.endWords + "\".";
                        dataGridViewBasicResult.Rows[indexResult].Cells[2].Value           = Convert.ToString(textsResult[indexResult].usindProbability) + " %";
                        dataGridViewBasicResult.Rows[indexResult].Cells[3].Style.BackColor = extremistPhrasesColor[indexResult];
                    }
                    for (int indexExtrType = 0; indexExtrType < phrasesResult.probabilityUsingExtremistPhrases.Length; indexExtrType++)
                    {
                        dataGridViewExtraResult.Rows.Add();
                        dataGridViewExtraResult.Rows[indexExtrType].Cells[0].Value = phraseVocabulary.ExtremistTypes()[indexExtrType];
                        dataGridViewExtraResult.Rows[indexExtrType].Cells[1].Value =
                            Convert.ToString(phrasesResult.probabilityUsingExtremistPhrases[indexExtrType]) + " %";
                    }
                    tabControlProcessing_SelectedIndexChanged(this, EventArgs.Empty);
                    richTextBoxText.ReadOnly = true;
                }
                else
                {
                    MessageBox.Show("Совпадений с экстремистскими текстами и фразами из базы данных не найдено.", "Результат анализа");
                }
            }
        }
 /// <summary>
 /// Обработчик нажатия кнопки "Отмена"
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void buttonCancell_Click(object sender, EventArgs e)
 {
     richTextBoxText.SelectAll();
     richTextBoxText.SelectionColor = Color.Black;
     richTextBoxText.ReadOnly       = false;
     buttonCancell.Enabled          = false;
     buttonCheck.Enabled            = true;
     textsResult   = null;
     phrasesResult = null;
 }
 /// <summary>
 /// Обработчик нажатия кнопки "Очистить"
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void buttonClear_Click(object sender, EventArgs e)
 {
     richTextBoxText.Text           = "Введите текст для анализа.";
     richTextBoxText.SelectionColor = Color.Black;
     richTextBoxText.ReadOnly       = false;
     dataGridViewBasicResult.Rows.Clear();
     dataGridViewExtraResult.Rows.Clear();
     buttonCancell.Enabled = false;
     buttonCheck.Enabled   = true;
     textsResult           = null;
     phrasesResult         = null;
 }
        /*
         * Переопределение функции сравнения двух объектов класса AvailabilityExtremistPhrasesResult.
         * Необходим для тестирования.
         */
        public override bool Equals(object obj)
        {
            if (obj == null || GetType() != obj.GetType())
            {
                return(false);
            }
            AvailabilityExtremistPhrasesResult aEPR = (AvailabilityExtremistPhrasesResult)obj;

            return((this.probabilityUsingExtremistPhrases.SequenceEqual(aEPR.probabilityUsingExtremistPhrases, new DoubleSequenceEqualComparer())) &&
                   (this.indexSpacesOfStartUsingPhrases.SequenceEqual(aEPR.indexSpacesOfStartUsingPhrases, new IntSequenceEqualComparer())) &&
                   (this.indexSpacesOfEndUsingPhrases.SequenceEqual(aEPR.indexSpacesOfEndUsingPhrases, new IntSequenceEqualComparer())));
        }