从前有一个FORM
FORM里有个FLOWLAYOUTPANEL
我通过如下方法在PANEL里面新建很多LABEL       private void button1_Click(object sender, EventArgs e)
        {          
            int n = 200;
                Label[] la = new Label[n]; 
                for (int i = 0; i < n; i++)
                { 
                    la[i] = new Label();
                    la[i].Text = Convert.ToString(i);
                    la[i].BorderStyle = BorderStyle.FixedSingle;
                    flowLayoutPanel1.Controls.Add(la[i]);
                }
        }
于是PANEL不够大了,出现了一个纵向的滚动条
但是好像这个滚动条却不支持滚轮
怎么才能支持滚轮呢?

解决方案 »

  1.   

    我会了..
    用PANEL自己的滚动条就可以了
    为FORM添加一个MOUSEWHEEL事件的监听器
    然后判断鼠标悬停是否实在PANEL上就OK了...        void Form1_MouseWheel(object sender, MouseEventArgs e)
            {
                Point aPoint = new Point(e.X, e.Y);
                aPoint.Offset(this.Location.X, this.Location.Y);
                Rectangle aRec1 = new Rectangle(flowLayoutPanel1.Location.X, flowLayoutPanel1.Location.Y, flowLayoutPanel1.Width, flowLayoutPanel1.Height);
                Rectangle aRec2 = new Rectangle(flowLayoutPanel2.Location.X, flowLayoutPanel2.Location.Y, flowLayoutPanel2.Width, flowLayoutPanel2.Height);
                
                if (RectangleToScreen(aRec1).Contains(aPoint))
                    flowLayoutPanel1.AutoScrollPosition = new Point(0, flowLayoutPanel1.VerticalScroll.Value - e.Delta / 80);
                if (RectangleToScreen(aRec2).Contains(aPoint))
                    flowLayoutPanel2.AutoScrollPosition = new Point(0, flowLayoutPanel2.VerticalScroll.Value - e.Delta / 80);
                
            }