首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

请问一个纠结的winform滚动条的有关问题

2012-07-26 
请教一个纠结的winform滚动条的问题在下做了一个winform,由于控件较多,又新建了一个usercontrol,把所有的

请教一个纠结的winform滚动条的问题
在下做了一个winform,由于控件较多,又新建了一个usercontrol,把所有的控件放在usercontrol上面,然后winform加载usercontrol。winform设置autoscroll为true。

让我纠结的现象是:

同样一份程序,在本机上运行正常,按下右侧的滚动条移动过程中,所有的控件跟着移动;

但是在另外一台机器上,按下滚动条拖动的时候,控件不动,松开滚动条,则控件一次性到位,也就是说,中间拖动的时候,控件不跟着移动。这样一来,滚动条的意义就不大了。

我换了一台机器,还是这样。只有自己开发的那台机器是正常的。

请问这是怎么回事?

[解决办法]
滚动事件中把窗口刷新一下可能就行了
[解决办法]

C# code
     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);            }        }
[解决办法]
探讨

楼上的是响应鼠标滚轮的方法吧?非常感谢!
但是我不明白为什么同一份程序,在不同的电脑上会有那么奇怪的差异。

[解决办法]
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);
}

热点排行