如何在不涉及鼠标的情况下捕获Scroll事件?

时间:2016-02-18 14:30:40

标签: c# winforms

我在flowLayoutPanel中捕获Scroll事件,其中包含一组控件(文本框)。如果我用鼠标移动滚动条,则会正确捕获滚动事件。但是如果使用Tab键从控件跳转到控件并且滚动条移动以给予文本框焦点,则不会引发事件。 在这种情况下我能做些什么,无论滚动如何被修改,我都需要捕捉。

我上传了一个简单的项目,可以显示问题http://1drv.ms/1UabHkv

2 个答案:

答案 0 :(得分:1)

您正在寻找GotFocus活动。还有一个LostFocus事件。 它适用于点击,标签,班次+标签等

textBox1.GotFocus += textBox1_ScrollEvent;

其中textBox1_ScrollEvent是滚动

的事件处理程序

答案 1 :(得分:0)

我不认为你对正确的事件具有约束力。 ScrollableControl.Scroll Event州的文档:

  

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

修改 似乎MS文档确实不正确。我已经使用您的示例项目和我创建的项目进行了测试,并且我遇到了Scroll事件未在制表符或鼠标滚轮上触发的相同行为。

似乎最好的做法是实施自己的滚动条并为Autoscroll关闭Panel

有关mroe信息,请参阅以下SO问题:How to use ScrollableControl with AutoScroll set to false