在下做了一个winform,由于控件较多,又新建了一个usercontrol,把所有的控件放在usercontrol上面,然后winform加载usercontrol。winform设置autoscroll为true。让我纠结的现象是:同样一份程序,在本机上运行正常,按下右侧的滚动条移动过程中,所有的控件跟着移动;但是在另外一台机器上,按下滚动条拖动的时候,控件不动,松开滚动条,则控件一次性到位,也就是说,中间拖动的时候,控件不跟着移动。这样一来,滚动条的意义就不大了。我换了一台机器,还是这样。只有自己开发的那台机器是正常的。请问这是怎么回事?

解决方案 »

  1.   

         private void MessageDetail_Load(object sender, EventArgs e)
            {
                //注册事件 
                this.MouseWheel += new MouseEventHandler(FormSample_MouseWheel);         }        ///   <summary> 
            ///   滚动方法 
            ///   </summary> 
            ///   <param   name= "sender "> </param> 
            ///   <param   name= "e "> </param> 
            void FormSample_MouseWheel(object sender, MouseEventArgs e)
            {
                //获取光标位置 
                Point mousePoint = new Point(e.X, e.Y);
                //换算成相对本窗体的位置 
                mousePoint.Offset(this.Location.X, pnlMessage.Location.Y);
                //判断是否在panel内 
                if (pnlMessage.RectangleToScreen(this.DisplayRectangle).Contains(mousePoint))
                {
                    //滚动 
                    pnlMessage.AutoScrollPosition = new Point(0, pnlMessage.VerticalScroll.Value - e.Delta);
                }
            } 
      

  2.   

     private void MessageDetail_Load(object sender, EventArgs e)
            {
                //注册事件 
                this.MouseWheel += new MouseEventHandler(FormSample_MouseWheel);         }        ///   <summary> 
            ///   滚动方法 
            ///   </summary> 
            ///   <param   name= "sender "> </param> 
            ///   <param   name= "e "> </param> 
            void FormSample_MouseWheel(object sender, MouseEventArgs e)
            {
                //获取光标位置 
                Point mousePoint = new Point(e.X, e.Y);
                //换算成相对本窗体的位置 
                mousePoint.Offset(this.Location.X, pnlMessage.Location.Y);
                //判断是否在panel内 
                if (pnlMessage.RectangleToScreen(this.DisplayRectangle).Contains(mousePoint))
                {
                    //滚动 
                    pnlMessage.AutoScrollPosition = new Point(0, pnlMessage.VerticalScroll.Value - e.Delta);
                }
            } 
      

  3.   

    多谢各位,其实是windows系统设置的一个属性。跟代码没有关系。