Panel -- ScrollBars 可见事件

Posted

技术标签:

【中文标题】Panel -- ScrollBars 可见事件【英文标题】:Panel -- ScrollBars Visible Event 【发布时间】:2013-01-24 11:20:09 【问题描述】:

我可能正在寻找错误的问题,但我无法找到答案。

我有一个将 AutoScroll 设置为 true 的面板。控件被动态添加到面板中。当滚动条可见时,我需要触发一个事件,但我找不到这样的事件。

欢迎提出任何建议。

更多细节:

这是一个 WinForms 项目。 面板是一个面板,System.Windows.Forms.Panel。 面板可见。 AutoScroll 设置为 true。 我想在 AutoScroll 使滚动条可见时执行一些代码。

【问题讨论】:

你能详细解释一下你想做的事情吗?您使用的是panel 还是update panel..?这是winforms 还是web forms? 你的意思是当表格可见时?或者您是否根据Button Click Event 设置面板可见?请澄清 @DJKRAZE,我提供了更多细节。具体到您的问题,1)Winforms,2)不,我的意思是当滚动条可见时,3)不,面板始终可见 您需要检查 OnPaint 方法,如下所示:***.com/questions/4305011/… 感谢@MUG4N,我发布了解决方案的基础知识作为答案。 【参考方案1】:

感谢@MUG4N 对原始问题的评论,这是解决方案。我目前的项目在 VB.Net 中,解决方案也是。

canvas 是面板的名称。

Private Sub canvas_Paint(sender As Object, e As PaintEventArgs) Handles canvas.Paint
     If Me.canvas.VerticalScroll.Visible Then
          ' Do stuff here
     End If
End Sub

要检查水平滚动,请使用Me.canvas.HorizontalScroll.Visible

重要

确保进行一些检查以避免无限循环。

【讨论】:

【参考方案2】:
    private void Form1_Load(object sender, EventArgs e)
    
        Int32 x = 20;
        Int32 y = 20;
        for (Int32 i = 0; i < 20; i++)
        
            Button btn = new Button();
            btn.Name = "btn" + i.ToString();
            btn.Location = new Point(x, y);
            x = x + 20;
            panel1.Controls.Add(btn);
        
        //call(1, new List<long>  1, 2, 3, 4 );
    
    private void **panel1_Scroll**(object sender, ScrollEventArgs e)
    
        MessageBox.Show("scroll");
    




 panel control have its own method "Scroll" see events of panel control and find the "Scroll"....

【讨论】:

您更正了滚动方法,但是当表单滚动时会触发,这不是我想要的。

以上是关于Panel -- ScrollBars 可见事件的主要内容,如果未能解决你的问题,请参考以下文章

在jQuery或Javascript中切换事件捕获?

如何将DataGridView中的滚动条显示出来

【C# panel】怎样能使填充窗体后的panel响应一下鼠标事件呢?

C#中panel 如何获取健盘事件

unity 3D里用NGUI,sence场景里创建panel,在场景里边不可见,为什么呀?

Java摇摆;如何切换面板的可见性?