为了批量显示图片,我用了一个panel,autoscroll设置为true,在pannel上使用了一个Label,在Label上使用了3个Picturebox。
根据需显示图片的数量,设置Label的height,使panel产生滚动条。根据panel1_Scroll中e.NewValue的值,设置3个picturebox的位置及显示图片的内容。
现在的问题是:没有写MouseWheel事件,但窗口浏览时还支持鼠标滚轮的滚动,同时右边的滚动条也响应的上下滚动,不过并没有触发Scroll事件,使得picturebox的位置及显示内容不随鼠标中键改变。
如何关联MouseWheel事件和Scroll事件??或者干脆取消panel对MouseWheel的支持~~~
两种方法分别如何实现?

解决方案 »

  1.   

    MouseWheel只系统支持的,应是你的Scroll的控制有问题。把代码贴出来看看。
      

  2.   

    private void panel1_Scroll(object sender, ScrollEventArgs e)
            {
                int n =(int)Math.Truncate(Convert.ToDouble(e.NewValue / 400));//picturebox大小为800*400
                if (n >= 1)
                {
                    picBox1.Location = new Point(0, (n - 1) * 400);
                    picBox2.Location = new Point(0, n * 400);
                    picBox3.Location = new Point(0, (n + 1) * 400);
    //dt是从数据库中读取的待显示图片的路径
                    picBox1.ImageLocation = dt.Rows[n - 1]["FilePath"].ToString();
                    picBox2.ImageLocation = dt.Rows[n]["FilePath"].ToString();
                    picBox3.ImageLocation = dt.Rows[n + 1]["FilePath"].ToString();
                    
                }
            }
      

  3.   

    this.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseWheel); private void panel1_MouseWheel(object sender, System.Windows.Forms.MouseEventArgs e)   
    {   
        MessageBox.Show("滚动事件已被捕捉");   
        System.Drawing.Size t = pictureBox1.Size;   
        t.Width += e.Delta;   
        t.Height += e.Delta;   
        pictureBox1.Width = t.Width;   
        pictureBox1.Height = t.Height;   
    }