C# 不希望自动滚动到表单的开头

C# 不希望自动滚动到表单的开头,c#,.net,winforms,panel,autoscroll,C#,.net,Winforms,Panel,Autoscroll,我有一个表单,它包含一个控件:Panel,它比表单本身大得多。因此,表单的滚动条用于导航此面板Autoscroll属性设置为true。问题是:在显示任何对话框窗口后,AutoscrollPosition被设置为beging。如何覆盖此行为以保存滚动位置 您可以通过在代码中手动设置滚动位置来覆盖此选项。只需使用表单的已激活和已停用事件 在这里查找同一问题的答案和代码 为什么您要使用表单autoscroll为什么不使用面板的autoscroll@Shekhar_Pro因为表单可以调整大小并显示两个滚

我有一个表单,它包含一个控件:Panel,它比表单本身大得多。因此,表单的滚动条用于导航此面板<表单的code>Autoscroll属性设置为
true
。问题是:在显示任何对话框窗口后,
AutoscrollPosition
被设置为beging。如何覆盖此行为以保存滚动位置

您可以通过在代码中手动设置滚动位置来覆盖此选项。只需使用表单的已激活和已停用事件

在这里查找同一问题的答案和代码


为什么您要使用表单autoscroll为什么不使用面板的autoscroll@Shekhar_Pro因为表单可以调整大小并显示两个滚动条,这是不需要的。确定其winforms。。。你以前没有提到过…谢谢你的回复和有用的链接。但是,奇怪的是,只有当我在MDI应用程序中选择另一个窗口时,才会触发激活和停用的事件。但显示对话框不会触发这些事件。我通过下一个代码验证了它:Deactivate+=(s,e)=>{MessageBox.Show(“Deactivated”);};已激活+=(s,e)=>{MessageBox.Show(“已激活”);};您不能这样做,因为您测试它的方式是将上述代码放入表单本身,这样您只会得到Deactivate事件,而不会得到Activate事件,因为MessageBox窃取了焦点(这证明MessageBox导致Deactivate事件),从而停用表单。要正确测试,请通过显示消息的按钮单击事件进行测试box@Micha我刚刚选中了它,打开一个对话框(我尝试了OpenFileDialog)会使表单停用。所以我的答案链接中的代码应该可以工作。T@Shekhar_ProMessageBox的想法并不好:)谢谢你指出了这一点。但是,事件仍然没有被触发——我在那里设置了断点。我认为我的问题与我正在使用MDI有关: