Winforms 如何修复窗体中子控件的位置?

Winforms 如何修复窗体中子控件的位置?,winforms,Winforms,我有一个按钮,我希望它始终位于表单上的同一位置(表单可见部分的左上角) 以下是一个例子: 因此,当我垂直或水平滚动时,按钮应始终位于左上角,并且应可见。 我该怎么做才能修复它呢?我猜您正在使用表单的自动滚动功能 将面板与AutoScroll=true一起放置在表单上并使用其滚动怎么样?然后,您将能够在表单上放置一个按钮,但该按钮位于此可滚动面板上。因此,滚动标尺将滚动视图面板内容,但按钮将固定在窗体上 如果不想添加其他容器组件,则可以在Scroll事件上添加处理程序,并调整按钮位置以响应表单滚

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

以下是一个例子:

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

我猜您正在使用表单的自动滚动功能

面板
AutoScroll=true
一起放置在表单上并使用其滚动怎么样?然后,您将能够在表单上放置一个按钮,但该按钮位于此可滚动面板上。因此,滚动标尺将滚动视图面板内容,但按钮将固定在窗体上


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

在表单上,放置一个
面板
,并将其
Dock
属性设置为
Fill
,并将
自动滚动
属性设置为
True

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

为了能够滚动(使用鼠标滚轮),焦点必须在可滚动区域内的控件上(在
面板内),而不是按钮上。为防止按钮聚焦:将按钮上的
TabStop
设置为
false
;此外,单击该控件时,还必须通过调用以下命令在其他控件上设置焦点:


this。选择nextcontrol(_按钮,true,true,true)

@Chepene我试过了,但没用。当您需要在调整表单大小时将元素保持在同一位置时,“锚定”会有所帮助。这是一个可能的选项,但为此,我需要添加另一个我不需要的容器。如果没有其他可能,那么这就是答案。然后您需要在Scroll事件中添加处理程序,并调整按钮位置以响应表单滚动。其ScrollEventArgs参数具有ScrollOrientation和NewValue/OldValue,用于计算控件的新X/Y位置。这可能有助于捕获鼠标滚轮:。表单有Control.mouseweel事件,您也可以尝试处理它。好的,我已经尝试过这个了。看起来一切都很好。谢谢