C# 当不涉及鼠标时,如何捕获滚动事件?

C# 当不涉及鼠标时,如何捕获滚动事件?,c#,winforms,C#,Winforms,Im在flowLayoutPanel中捕获滚动事件,其中包含一组控件(文本框)。如果我用鼠标移动滚动条,则正确捕获滚动事件。但是,如果使用tab键从一个控件跳到另一个控件,并且滚动条移动以提供文本框焦点,则不会引发事件。 在这种情况下我能做什么,我真的需要捕获,无论卷轴如何修改 我上传了一个简单的项目,其中可以显示问题您正在寻找GotFocus事件。还有一个LostFocus事件。 它适用于单击、制表符、shift+制表符等 textBox1.GotFocus += textBox1_Scrol

Im在flowLayoutPanel中捕获滚动事件,其中包含一组控件(文本框)。如果我用鼠标移动滚动条,则正确捕获滚动事件。但是,如果使用tab键从一个控件跳到另一个控件,并且滚动条移动以提供文本框焦点,则不会引发事件。 在这种情况下我能做什么,我真的需要捕获,无论卷轴如何修改


我上传了一个简单的项目,其中可以显示问题

您正在寻找GotFocus事件。还有一个LostFocus事件。 它适用于单击、制表符、shift+制表符等

textBox1.GotFocus += textBox1_ScrollEvent;

其中
textBox1\u ScrollEvent
是滚动的事件处理程序

我认为您没有绑定到正确的事件。州政府的文件:

当用户通过与滚动条交互在客户端区域滚动时,或当用户在控件之间导航且活动控件滚动到视图时,会发生滚动事件。当您编写代码(例如设置AutoScrollPosition属性)滚动客户端区域时,也会发生Scroll事件

编辑: MS文档似乎确实不正确。我已经使用您的示例项目和我创建的示例项目进行了测试,我遇到了相同的行为,
Scroll
事件没有在tab甚至mouseweel上触发

似乎最好的做法是实现自己的滚动条,并关闭
面板的
自动滚动


有关mroe信息,请参见以下SO问题:

但使用该问题,我必须为flowLayoutPanel内的每个文本框订阅每个GotFocus事件,然后在该代码中验证滚动是否已移动。我认为这太过分了,必须有一个更干净的方法。如果在合理的时间内没有找到任何方法,我会将其作为一个答案。正如我所说,由于没有找到替代方法,我使用了这种方法。希望它不会太慢身体的动作。感谢描述是美的,现实是不同的。我使用的正是那个事件,而真正的行为与之不符。你能提供你的代码以便它可以被复制吗?当然,给我一点时间来了解什么是重要的我添加了一个简单的项目来向你展示这个问题。我将代码放在OneDrive上,链接在问题中。@mjsr我可以复制您的问题更新答案。