在滚动事件处理程序上多次触发事件

时间:2015-07-29 04:46:56

标签: c# .net winforms

当我在c#中添加代码来滚动面板事件时,我发现了一种奇怪的行为。

我添加了一个面板并在面板内(auto-Scroll = true)有一个分组框。

如下图所示,单击滚动可将滚动条移动一小段距离。

enter image description here

同时,当我在事件中添加一个消息框以显示滚动发生的通知时,会弹出多个消息框。

enter image description here

为什么?

我已经计划在滚动时添加一些逻辑,但如果它多次出现,那么它是如何实现的呢?

这是事件处理程序:

private void panel1_Scroll_1(object sender, ScrollEventArgs e)
{
    MessageBox.Show("ScrollBar is clicked");
}

1 个答案:

答案 0 :(得分:3)

这就是滚动事件的工作原理,它在面板滚动时会多次触发。

尝试ScrollEventArgs.Type EndScroll,这应该是最后一次滚动事件。

  private void panel1_Scroll_1(object sender, ScrollEventArgs e)
    {
        if (e.Type == ScrollEventType.EndScroll)
            MessageBox.Show("ScrollBar is clicked");
    }

如果以上情况对您的案例没有帮助,您需要使用this thread中解释的方法之一处理这些多重事件。