这是一个Windows窗体.
Panel具有AutoScroll = True
我正在动态添加面板到主面板,最终超出主面板显示矩形.然后将标签,组合框和文本框添加到添加的面板.
如果我选择一个组合框或文本框,它会将主面板滚动条位置重置为0,并且组合框的下拉菜单将放置在屏幕X,Y上,如果滚动条没有重置,它应该在那里.
我正在考虑在选择控件时保存滚动位置.测试后,似乎滚动位置还没有重置,所以我可以在这里捕获它.然后在希望面板的某些事件上恢复滚动位置.我试图找出我将用于恢复滚动位置的确切事件.我也希望当我这样做时,下拉菜单将被放置在正确的x,y.
一个更好的解决方案是创建一个基于面板控件的自定义控件,并可能覆盖一个事件?这样我每次使用滚动面板时都不需要保存滚动位置,从而使我的项目变得杂乱无章.
Unt*_*ble 32
我找到了我在这里遇到的问题的答案: 答案
public class CustomPanel : System.Windows.Forms.Panel
{
protected override System.Drawing.Point ScrollToControl(System.Windows.Forms.Control activeControl)
{
// Returning the current location prevents the panel from
// scrolling to the active control when the panel loses and regains focus
return this.DisplayRectangle.Location;
}
}
Run Code Online (Sandbox Code Playgroud)