一个winform窗体中,有两个Panel
在窗体加载时注册了两个鼠标移动事件
this.MouseWheel += new MouseEventHandler(panel1_MouseWheel);
this.MouseWheel += new MouseEventHandler(panel2_MouseWheel);
代码如下:
void panel1_MouseWheel(object sender, MouseEventArgs e)
{
// 处理鼠标滚动事件 // 此处判断鼠标是否在 Panel 区域中,如果不在则不响应滚动
Rectangle pnlRightRectToForm = this.panel1.ClientRectangle; // 获得Panel的矩形区域
pnlRightRectToForm.Offset(this.panel1.Location); // 将Panel矩形区域转换为在Form空间中的占据区域
if (!pnlRightRectToForm.Contains(e.Location)) // 若当前鼠标位置点不在Panel区域中时
return; if (e.Delta < 0) // 向下滚动
{ Point pos = new Point();
pos.X = -this.panel1.AutoScrollPosition.X; // 由于获取AutoScrollPosition的值为实际滚动值的负值
pos.Y = -this.panel1.AutoScrollPosition.Y + 50; // 故在此重新设置需要的滚动到的新值(位置值)
this.panel1.AutoScrollPosition = pos; // 切记获取AutoScrollPosition 与设置它的值所得结果并不相同
this.panel1.AutoScrollPosition = pos;
}
else // 向上滚动
{
Point pos = new Point();
pos.X = -this.panel1.AutoScrollPosition.X;
pos.Y = -this.panel1.AutoScrollPosition.Y - 50;
this.panel1.AutoScrollPosition = pos;
this.panel1.AutoScrollPosition = pos;
}
}
当滚动鼠标滑轮时, 这两个panel一起上下滚 愁人 该怎么改呀
在窗体加载时注册了两个鼠标移动事件
this.MouseWheel += new MouseEventHandler(panel1_MouseWheel);
this.MouseWheel += new MouseEventHandler(panel2_MouseWheel);
代码如下:
void panel1_MouseWheel(object sender, MouseEventArgs e)
{
// 处理鼠标滚动事件 // 此处判断鼠标是否在 Panel 区域中,如果不在则不响应滚动
Rectangle pnlRightRectToForm = this.panel1.ClientRectangle; // 获得Panel的矩形区域
pnlRightRectToForm.Offset(this.panel1.Location); // 将Panel矩形区域转换为在Form空间中的占据区域
if (!pnlRightRectToForm.Contains(e.Location)) // 若当前鼠标位置点不在Panel区域中时
return; if (e.Delta < 0) // 向下滚动
{ Point pos = new Point();
pos.X = -this.panel1.AutoScrollPosition.X; // 由于获取AutoScrollPosition的值为实际滚动值的负值
pos.Y = -this.panel1.AutoScrollPosition.Y + 50; // 故在此重新设置需要的滚动到的新值(位置值)
this.panel1.AutoScrollPosition = pos; // 切记获取AutoScrollPosition 与设置它的值所得结果并不相同
this.panel1.AutoScrollPosition = pos;
}
else // 向上滚动
{
Point pos = new Point();
pos.X = -this.panel1.AutoScrollPosition.X;
pos.Y = -this.panel1.AutoScrollPosition.Y - 50;
this.panel1.AutoScrollPosition = pos;
this.panel1.AutoScrollPosition = pos;
}
}
当滚动鼠标滑轮时, 这两个panel一起上下滚 愁人 该怎么改呀
解决方案 »
- System.FormatException: 该字符串未被识别为有效的 DateTime
- Windows窗体如何在订阅的其它类事件中对自己窗体中的Label内容进行改变.
- 请教一个socket编程的问题
- 如何用xpath定位有命名空间,前缀的xml文件
- 用vs2005开发移动web,为什么在访问.aspx页面的时候地址中会自动加一串随机字符串??
- 当ListView里面甘一行被用户选中的时候的事件是什么?谢谢
- 标准表达式中数据类型不匹配。
- c#里面如何把.aspx的页面生成为htm页面
- 哪位大哥有蒋数字转换成字母的算法或思路啊?
- 问个简单的问题
- 子窗体加载自定义控件问题
- .net读取XML时报错:分析 EntityName 时出错!
this.MouseWheel += new MouseEventHandler(panel2_MouseWheel);
这样,this.MouseWheel会执行两个动作
至少你应该判断一下sender是panel1还是panel2,然后分别对待
this.MouseWheel += new MouseEventHandler(Form1_MouseWheel);然后在事件响应函数中写void panel1_MouseWheel(object sender, MouseEventArgs e)
{
// 处理鼠标滚动事件 // 此处判断鼠标是否在 Panel 区域中,如果不在则不响应滚动
Rectangle pnlRightRectToForm1 = this.panel1.ClientRectangle; // 获得Panel的矩形区域
pnlRightRectToForm1.Offset(this.panel1.Location); // 将Panel矩形区域转换为在Form空间中的占据区域
if (!pnlRightRectToForm1.Contains(e.Location)) // 若当前鼠标位置点不在Panel区域中时
return; if (e.Delta < 0) // 向下滚动
{ Point pos = new Point();
pos.X = -this.panel1.AutoScrollPosition.X; // 由于获取AutoScrollPosition的值为实际滚动值的负值
pos.Y = -this.panel1.AutoScrollPosition.Y + 50; // 故在此重新设置需要的滚动到的新值(位置值)
this.panel1.AutoScrollPosition = pos; // 切记获取AutoScrollPosition 与设置它的值所得结果并不相同
this.panel1.AutoScrollPosition = pos;
}
else // 向上滚动
{
Point pos = new Point();
pos.X = -this.panel1.AutoScrollPosition.X;
pos.Y = -this.panel1.AutoScrollPosition.Y - 50;
this.panel1.AutoScrollPosition = pos;
this.panel1.AutoScrollPosition = pos;
} // 继续添加panel2的代码
Rectangle pnlRightRectToForm2 = this.panel2.ClientRectangle;
// 以下类似panel1的做法
}
panel1.MouseWheel += new MouseEventHandler(panel1_MouseWheel);
panel2.MouseWheel += new MouseEventHandler(panel2_MouseWheel);