今天我正在尝试使用c#按顺序将多个窗口控件放到面板上。 我希望它们停靠在顶部,这样我就可以使用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/
这解释了使用对接,控件可以彼此相邻堆叠。我希望停靠的堆叠控件不会绑定到面板的左边缘。
答案 0 :(得分:0)
无法使用对接和锚定的组合。 TableLayoutPanel可能在这里工作但我被绑在一个简单的Panel上。
修复是使用填充强制控件居中:
userControl.Dock = DockStyle.Top;
pnlParent.Padding = new Padding((pnlParent.Width - userControl.Width) / 2, 0, 0, 0);
userControl.BringToFront();