#c# #winforms
#c# #winforms
Вопрос:
У меня есть приложение Windows Form, в которое я могу добавлять пользовательские элементы управления, нажимая кнопку. Я также могу удалять по одному элементу управления за раз, выбирая его и нажимая кнопку удаления. Все это работает нормально, но если я добавлю три элемента управления и удалю второй, между двумя оставшимися элементами управления в форме появится пробел. Я хотел бы, чтобы все остальные элементы управления переместились вверх, чтобы заполнить пробел.
Вот так:
// Добавьте три элемента управления, и у нас получится вот это:
Control1
Control2
Control3
// Удалите Control2, и теперь у нас есть это:
Control1
Control3
// Чего бы я хотел, так это этого:
Control1
Control3
Вот что я пробовал, но это не выполняет свою работу
private void btQuestionDelete_Click(object sender, EventArgs e)
{
bool adjustMode = false;
int height = 0;
foreach (Control c in this.tpQuestions.Controls)
{
if (c is QuestionControl)
{
if (adjustMode)
{
int moveUpBy = c.Top - height;
c.Top = moveUpBy;
c.Parent.Refresh();
}
else
{
QuestionControl q = (QuestionControl)c;
if (q.IsSelected)
{
this.tpQuestions.Controls.Remove(c);
adjustMode = true;
height = q.Height;
}
}
}
}
}
Комментарии:
1. может быть, вы хотите взглянуть на flowLayoutPanels?
2. Спасибо. Добавление и удаление элементов управления из FlowLayoutPanel значительно упрощает жизнь. Если вы разместите свой комментарий в качестве ответа, я соглашусь.
Ответ №1:
может быть, вы хотите взглянуть на flowLayoutPanels?
Ответ №2:
Чтобы добавить элемент управления, просто сделайте это:
public void AddControl(ControlToAdd item)
{
item.Dock = DockStyle.Top;
this.Controls.Add(item);
}
Чтобы удалить элемент управления, просто Dispose
это! Все остальные элементы управления будут скользить вверх!