如何在表单中修复子控件的位置?

时间:2013-05-17 13:16:50

标签: winforms

我有一个按钮,我希望它始终位于表单上的相同位置(表单可见部分的左上角)。

以下是示例:

enter image description here

因此,当我垂直或水平滚动时,按钮应该始终位于左上角,并且应该是可见的。 我该怎么办才能修好它?

2 个答案:

答案 0 :(得分:2)

我猜您使用的是Form的AutoScroll功能。

如果将PanelAutoScroll = true放在表单上并使用其滚动代码呢?然后,您将能够在表单上放置一个按钮,但在此可滚动面板上。因此,滚动标尺将滚动视图面板内容,但按钮将保持固定到表单。

如果您不想添加其他容器组件,则可以在Scroll事件上添加处理程序并调整按钮位置以响应表单滚动。 ScrollEventArgs参数有ScrollOrientationNewValueOldValue来计算控件的新X / Y位置。

答案 1 :(得分:0)

在表单上,​​您放置Panel并将其Dock属性设置为Fill,将AutoScroll属性设置为True

您将所有其他控件放在此面板中,但不是要保持可见的按钮。 右键单击面板 - > Send-to-Back。 Panel会调整大小以匹配表单;滚动只会在面板中发生,因此按钮将始终保持可见(您可以设置锚点:左侧,顶部)

为了能够滚动(使用鼠标滚轮),焦点必须位于可滚动区域内的控件(Panel内),而不是按钮上。要防止按钮获得焦点,请将TabStop设置为false;此外,当单击它时,您还必须通过调用:

将焦点设置在另一个控件上

this.SelectNextControl(the_button, true, true, true, true);