Сегодня я пытаюсь использовать C # для последовательного размещения ряда элементов управления Windows на панели. Я хотел бы, чтобы они пристыковались к вершине, чтобы затем я мог использовать BringToFront (), чтобы сложить их.
ОДНАКО я бы хотел, чтобы они были сосредоточены. В настоящее время поведение стыковки заставляет элементы управления располагаться слева от экрана (как бы я ни менял размер и свойство местоположения)
Затем я попытался вместо этого привязать элементы управления к верхней части панели. Это позволило центрировать элементы управления, а также изменить их размер, но привязка не имеет поведения наложения, и каждый элемент управления перезаписывает предыдущий.
Я изучал это много часов и не нашел ответов на этот вопрос. Можно ли использовать одно или оба этих свойства, чтобы расположить элементы управления в центре панели?
В настоящее время мой код выглядит так:
//Docking
userControl.Dock = DockStyle.Top;
userControl.Width = 633;
userControl.Left = (pnlRules.Width - userControl.Width) / 2; //doesn't work
Point location = new Point(((pnlRules.Width - userControl.Width) / 2), 0);
userControl.Location = location; //doesn't work
userControl.BringToFront();
OR
//Anchoring
userControl.Anchor = AnchorStyles.Top;
Point location = new Point(((pnlRules.Width - userControl.Width) / 2), 0);
userControl.Location = location;
userControl.BringToFront(); //doesn't work
Мои выходы представляют собой либо сложенные элементы управления, привязанные к левому краю панели (закрепление), либо перекрывающиеся элементы управления с красивым изменением размера и центрированием (привязка)
Спасибо :) Аня
Изменить: эта подпись прекрасно описывает мою проблему: http://www.techrepublic.com/article/manage-winform-controls-using-the-anchor-and-dock-properties/
Это объясняет, что с помощью стыковки элементы управления можно размещать рядом друг с другом. Я просто хотел бы, чтобы пристыкованные, уложенные друг на друга элементы управления не были привязаны к левому краю панели.
TableLayoutPanel
, в нем есть заклинания макета. Что касаетсяBringToFront()
, вместо того, чтобы иметь что-то позади, а затем вынести на передний план, вы можете сделать это невидимым (Visible = false
) и правильно расположить, чтобы сделать это видимым будет правильно. - person Sinatr   schedule 08.10.2014