我有一个PictureBox。我想在鼠标悬停到特定位置时自动添加LinkLabel。一切都很好但我无法点击LinkLabel,因为它无法停止闪烁。这是我的代码:
private void ptbType1_MouseHover(object sender, EventArgs e)
{
PictureBox ptb = sender as PictureBox;
LinkLabel lkl = new LinkLabel();
lkl.Text = "Change Image...";
lkl.Font = new Font(lkl.Font.FontFamily, 10, FontStyle.Regular);
lkl.BackColor = SystemColors.Window;
lkl.AutoSize = false; lkl.TextAlign = ContentAlignment.MiddleCenter;
lkl.Size = new Size(120, 30); lkl.BorderStyle = BorderStyle.FixedSingle;
lkl.Location = new Point(ptb.Size.Width - 120, 5);
ptb.Controls.Add(lkl);
}
**更新2016年10月18日:使用工具提示来避免gzaxx的LOTS OF linklabel的想法建议我实现另一种方式:现在链接标签已经在图片框上,其Visible属性设置为False。当鼠标悬停在图片框上时,标签显示为可见 - >当鼠标离开时,反之亦然。一切都保持不变:闪烁使其无法点击。当然,图片框上的MouseHover事件就是原因。
有什么想法吗?谢谢你的帮助!
答案 0 :(得分:0)
您的代码存在一些问题。首先创建 A LOT 标签,每次鼠标移动毫米时,都会创建新标签。其次,您不会将事件附加到链接标签,因此单击它不会执行任何操作。我的建议是使用Tooltip
在PictureBox
上悬停信息时显示消息"点击更改图片..."并处理点击事件。
// should be called only once
private void AttachClickEvent(PictureBox ptb)
{
ptb.MouseClick += (s, o) =>
{
// open change dialog here
}
}
这是一个简单的解决方案。
答案 1 :(得分:0)
感谢您的支持,我已经解决了这个问题。关键是
当鼠标光标进入linklabel时,它巧合地触发了picturebox的MouseLeave_Event => linklabel消失
随着标签消失,鼠标光标随后进入图片框,因此图片框的MouseHover_Event工作=> linklabel出现
--->永恒的循环 - >眨眼
我已通过此代码处理它以检查鼠标光标是否在链接标签绑定区域中,链接标签静止不动,只有当光标实际离开图片框时才会消失:
...
filterable do
User.current
end
...
完成!我在网站上的第一个问题,我自己回答,辉煌:))