在我当前的项目中,当我将usercontrol
添加到panel
的{{1}}时,我遇到了问题。我设法使用以下代码将其添加到面板中间:
splitcontainer
但是现在我的滚动条消失了,当我移除 ucFactuur ucFactuur = new ucFactuur();
ucFactuur.Location = new Point(
splitContainer1.Panel2.ClientSize.Width / 2 - ucFactuur.Size.Width / 2,
splitContainer1.Panel2.ClientSize.Height / 2 - ucFactuur.Size.Height / 2);
ucFactuur.Anchor = AnchorStyles.None;
splitContainer1.Panel2.Controls.Add(ucFactuur);
时它就在那里但是当我调整窗口大小时它不会停留在中间(它处于固定位置)。
我不确定如何解决这个问题,我也找不到任何其他方法来动态地集中我的用户控件。
谢谢, 托马斯
答案 0 :(得分:2)
Anchoring.None
在这种情况下不起作用,因为它只在没有滚动条时才有效。但是一旦你有了滚动条,你就不再希望控件居中了,你需要将它放在滚动值的位置。
换句话说,我认为你必须自己处理调整大小:
private void DoResize(object sender, EventArgs e) {
splitContainer1.Panel2.AutoScrollMinSize = ucFactuur.Size;
if (ucFactuur.Width < splitContainer1.Panel2.ClientSize.Width) {
ucFactuur.Left = splitContainer1.Panel2.ClientSize.Width / 2 -
ucFactuur.Width / 2;
} else {
ucFactuur.Left = splitContainer1.Panel2.AutoScrollPosition.X;
}
if (ucFactuur.Height < splitContainer1.Panel2.ClientSize.Height) {
ucFactuur.Top = splitContainer1.Panel2.ClientSize.Height / 2 -
ucFactuur.Height / 2;
} else {
ucFactuur.Top = splitContainer1.Panel2.AutoScrollPosition.Y;
}
}
然后您的设置将更改为:
ucFactuur ucFactuur = new ucFactuur();
ucFactuur.AutoSize = true;
ucFactuur.Resize += DoResize;
splitContainer1.Panel2.Resize += DoResize;
splitContainer1.Panel2.AutoScroll = false;
splitContainer1.Panel2.Controls.Add(ucFactuur);