Сдвинуть все мои элементы управления на самый верх панели ?
Привет, я сделал свой контроль аккордеона.
код:
class Acordion : Panel { Panel panel = new Panel(); int Y; public Acordion(int x, int y, int sizeX,int sizeY) { this.Location= new Point(x, y); this.Size = new Size(sizeX,sizeY); Button expandButton = new Button(); expandButton.Location = new Point(0,0); expandButton.Size = new Size(sizeX,20); expandButton.Click += (s, e) => { Expand(); }; panel.Location = new Point(0,0); panel.Size = new Size(sizeX,100); TextBox textBox = new TextBox(); textBox.Location = new Point(0,expandButton.Size.Height + 10); textBox.Size = new Size(sizeX, 10); textBox.BringToFront(); this.Controls.Add(expandButton); this.Controls.Add(panel); panel.Controls.Add(textBox); Y = panel.Height; } public void Expand() { if (panel.Height != 0) { panel.Height = 0; } else { panel.Height = Y; } } }
этот код работает почти так, как я хочу, чтобы он вел себя. в настоящее время, когда вы нажимаете кнопку, Панель под ней исчезает, потому что ее размер установлен на 0.
Но другие элементы управления под ним не двигаются вверх.
так что на этой фотографии все аккорды расширены.
ссылка на картинку[^]
и в этом случае первый из них закрыт.
ссылка на картинку[^]
как сделать так, чтобы вторая двигалась вверх, если первая закрыта ?
Что я уже пробовал:
Я попытался сделать метод, чтобы пробежаться по всем элементам управления на панели и переместить их вверх. но я не мог заставить его работать.