Kakeru
@Kakeru

Как удалить UserControl из FlowLayoutPanel и сместить остальные UserControl'ы, если потребуется?

Создаю приложение опросов, динамически загружаются вопросы с определенным типом в зависимости от указанного типа вопроса, на каждый тип создан свой UserControl (скорее всего это можно было бы упростить), на каждом UserControl есть кнопка "Удалить". При нажатии на нее вопросы удаляются из словаря.
Пытался удалять через следующий код :
this.Parent.Controls.Remove(this);
Однако работало только тогда, когда на самом FlowLayoutPanel находится только один вопрос

Код Control'a
public partial class QuestionTypeCheckBox : UserControl
    {
        Dictionary<QuestionEntity, List<AnswerEntity>> _questionAnswers;

        public QuestionTypeCheckBox(ref Dictionary<QuestionEntity, List<AnswerEntity>> questionAnswers)
        {
            InitializeComponent();

            _questionAnswers = questionAnswers;
        }

        private void DeleteQuestionButton_Click(object sender, EventArgs e)
        {
            var toRemove = _questionAnswers.FirstOrDefault(k => k.Key.Description == QuestionTextLabel.Text).Key;

            _questionAnswers.Remove(toRemove);

           // После этого надо убрать Control из FlowLayoutPanel
        }
    }
  • Вопрос задан
  • 107 просмотров
Пригласить эксперта
Ответы на вопрос 1
Nie_yar
@Nie_yar
Начинающий программист.
Когда-то что-то подобное делал. Попробуй этот код.
static QuestionTypeCheckBox _obj;
        public static QuestionTypeCheckBox Instance
        {
            get
            {
                if (_obj == null)
                {
                    _obj = new QuestionTypeCheckBox();
                }
                return _obj;
            }
        }

        public FlowLayoutPanel  pnlView
        {
            get { return pnl_main; } // имя элемента 
            set { pnl_main = value; }
        }

        private void DeleteQuestionButton_Click(object sender, EventArgs e)
        {
            ...
             FlowLayoutPanel.Instance.pnlView.Controls.Clear(); // Удаление контролов
        }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы