private void FillTrasnslationBoxes(WordsAndTextsData data) { LinkedListWithTranslations translations; // Получение списка переводов if (WordsCheckBox.Checked) { translations = data.GetWordOrTextTranslation(WordsOrTextsComboBox.Text, WordsAndTextsData.WordOrText.Word); } else { translations = data.GetWordOrTextTranslation(WordsOrTextsComboBox.Text, WordsAndTextsData.WordOrText.Text); } // Если нет поля для перевода, то добавляем его if (TranslationTextBoxes.Count < translations.Count) { while (TranslationTextBoxes.Count < translations.Count) { AddTranslationTextBox(data); } } // Если поле есть, но оно невидимо, то делаем его видимым if (translation_text_boxes_visible < translations.Count) { while (translation_text_boxes_visible < translations.Count) { TranslationTextBoxes[translation_text_boxes_visible].Visible = true; DeleteTranslationButton[translation_text_boxes_visible - 1].Visible = true; ++translation_text_boxes_visible; } } // Если полей слишком много, то делаем их невидимыми else if (translation_text_boxes_visible > translations.Count) { while (translation_text_boxes_visible > translations.Count) { --translation_text_boxes_visible; TranslationTextBoxes[translation_text_boxes_visible].Visible = false; if (translation_text_boxes_visible > 0) { DeleteTranslationButton[translation_text_boxes_visible - 1].Visible = false; } } } int it = 0; // Заполняем поля с переводом foreach (var translation in translations) { TranslationTextBoxes[it++].Text = translation; } }
private void AddTranslationTextBox(WordsAndTextsData data) { int text_box_y_pos = TranslationTextBoxes[TranslationTextBoxes.Count - 1].Location.Y; TranslationTextBoxes.Add(new TextBox()); TranslationTextBoxes[TranslationTextBoxes.Count - 1].Font = text_font; TranslationTextBoxes[TranslationTextBoxes.Count - 1].Width = 550; TranslationTextBoxes[TranslationTextBoxes.Count - 1].Location = new Point(167, text_box_y_pos + 42); TranslationTextBoxes[TranslationTextBoxes.Count - 1].Visible = false; TranslationPanel.Controls.Add(TranslationTextBoxes[TranslationTextBoxes.Count - 1]); if (DeleteTranslationButton == null) { DeleteTranslationButton = new List <Button>(); } DeleteTranslationButton.Add(new Button()); DeleteTranslationButton[DeleteTranslationButton.Count - 1].Font = button_font; DeleteTranslationButton[DeleteTranslationButton.Count - 1].Text = minus; DeleteTranslationButton[DeleteTranslationButton.Count - 1].Width = 34; DeleteTranslationButton[DeleteTranslationButton.Count - 1].Height = 34; DeleteTranslationButton[DeleteTranslationButton.Count - 1].Location = new Point(726, text_box_y_pos + 41); DeleteTranslationButton[DeleteTranslationButton.Count - 1].Visible = false; int text_box_index = TranslationTextBoxes.Count - 1; DeleteTranslationButton[DeleteTranslationButton.Count - 1].Click += (sender, e) => { bool success = false; if (WordsOrTextsComboBox.Text != string.Empty && TranslationTextBoxes[text_box_index].Text != string.Empty) { var translation_list = data.GetWordOrTextTranslation(WordsOrTextsComboBox.Text, WordsCheckBox.Checked ? WordsAndTextsData.WordOrText.Word : WordsAndTextsData.WordOrText.Text); if (translation_list != null && translation_list.Count > 1) { foreach (var translation in translation_list) { if (translation.Equals(TranslationTextBoxes[text_box_index].Text, System.StringComparison.CurrentCultureIgnoreCase)) { success = translation_list.Remove(translation); break; } } } if (success) { MessageBox.Show(translation_delited); } else { MessageBox.Show(translation_delited_error, error); } } else if (WordsOrTextsComboBox.Text == string.Empty) { MessageBox.Show(WordsCheckBox.Checked ? word_was_not_selected : text_was_not_selected, error); } else if (TranslationTextBoxes[text_box_index].Text == string.Empty) { MessageBox.Show(field_dont_have_translation, error); } FillTrasnslationBoxes(data); }; TranslationPanel.Controls.Add(DeleteTranslationButton[DeleteTranslationButton.Count - 1]); }