【发布时间】:2014-09-19 23:21:44
【问题描述】:
我有一个面板,我在主面板中放置了一个流程布局面板,流程布局面板有很多图像。我的用户界面看起来像这样
现在我得到了一个在面板中滚动容器的代码。我的意思是当我将鼠标放在主面板的最左侧或最右侧区域时,流布局将在主面板中滚动。我检查了他们的代码正在运行,但是当我将他们的代码放在我的项目中时,它不起作用,我的意思是当我将鼠标放在主面板的最左侧或最右侧区域时滚动不起作用。
在这里我附上了导致在主面板中滚动流布局面板的主要代码
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED
return cp;
}
}
int _myval = 5;
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
if (e.Y < metroPanel1.Top || e.Y > metroPanel1.Top + metroPanel1.Height) return;
if (e.X <= metroPanel1.Left && e.X >= metroPanel1.Left - 40)
{
if (metroPanel1.HorizontalScroll.Value <= _myval)
{
metroPanel1.HorizontalScroll.Value = _myval;
}
else
{
metroPanel1.HorizontalScroll.Value -= _myval;
}
}
if (e.X <= (metroPanel1.Left + metroPanel1.Width + 40) && e.X >= (metroPanel1.Left + metroPanel1.Width))
{
metroPanel1.HorizontalScroll.Value += _myval;
}
}
我只是不明白这里使用的这个值 40 if (e.X <= metroPanel1.Left && e.X >= metroPanel1.Left - 40)
我想我需要使用不同的值而不是 40,但我使用了 10 和 20 但没有用。 这是我的完整项目链接,任何人都可以从中下载并查看我的例程中阻止滚动的问题。这是链接https://onedrive.live.com/embed?cid=C4A6F16F34D7540A&resid=C4A6F16F34D7540A%21134&authkey=AM5Fq2gcFLtcw_A
所以我的请求是请某人查看我的代码并指导我需要更改代码的内容以及原因。谢谢
【问题讨论】:
-
看起来 40 只是填充,让您有一个间隙来查看鼠标是否靠近边缘而不是正好在边缘,如果有的话,您最好增加这个值(在测试期间)
-
我如何检测我应该给出什么值,比如 40 或 60....只是通过跟踪和错误?有什么捷径可以知道我应该使用什么值吗?谢谢
-
基本上就是这样,它的大部分试验和错误,40像素对我来说听起来足够大,但它适合你
-
我也测试了 60 和 80,但仍然没有运气。
-
这可能不是问题所在,只需在其中一个 if 条件中设置一个断点,看看它是否被命中,如果是,会发生什么。你的问题可能太宽泛了