在C#中,我们有以下内容:
UserControl
和隐身PictureBox
的{{1}}。我想要实现的目标:
FlowPanel
悬停时
(UserControl
),无形的
MouseHover
将设置为FlowPanel
。当鼠标离开时
visible =
true
或 UserControl
,.
FlowPanel
应设为FlowPanel
。在visible =
false
上使用MouseLeave
无法完成此任务,因为当鼠标进入UserControl
时会触发此事件。当鼠标离开FlowPanel
时隐藏FlowPanel
,但是有问题(有时会触发FlowPanel
,有时不会)。
解决此问题的最佳方法是什么?
答案 0 :(得分:2)
我在我的一个表格上做了类似的事情
在你的第一个活动中做一个if(control.Opacity = 1.0)
private void Form1_MouseLeave(object sender, EventArgs e)
{
if (this.ClientRectangle.Contains(this.PointToClient(Cursor.Position)))
{
this.Opacity = 1.0;
}
else
{
int loopctr = 0;
for (loopctr = 100; loopctr >= 5; loopctr -= 10)
{
this.Opacity = loopctr / 99.0;
this.Refresh();
Thread.Sleep(100);
}
}
}
答案 1 :(得分:0)
如果未触发FlowPanel.MouseLeave
,则UserControl.MouseLeave
未被触发?我想隐藏在这两个事件上可能会有所作为。
答案 2 :(得分:0)
这是一个常见的UI问题。鼠标事件作为样本出现,因此可能会丢失一些像素位置,并且控件不会触发鼠标事件。
当在控件内检测到MouseHover并以固定间隔(例如342ms)轮询光标时,一种不太好用的方法是设置某种形式的Timer。