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事件,您也可以尝试处理它。好的,我已经尝试过这个了。看起来一切都很好。谢谢