我有一个fom,其中有一个用户控件停靠填充。
此用户控件显示不同的图像。每个图像都有Id,我有一个imageId与imageDetail对象字典的列表。
捕获此用户控件的鼠标移动事件,我在工具提示中显示鼠标的当前X和Y位置。
当用户将鼠标悬停在图像上一段时间后,我还希望在工具提示中显示图像细节。
我尝试使用Mouse Hover事件执行此操作,但只有在鼠标进入用户控件绑定时才会引发此事件。在此之后如果我在用户控制鼠标中移动鼠标悬停事件不会触发......
如何在工具提示中沿图像细节显示当前的X,Y位置。
有没有办法使用一些计时器在鼠标移动中模拟鼠标悬停事件。
是否有示例代码..
我通过
解决了这个问题public partial class Form1 : Form
{
Timer timer;
bool moveStart;
int count = 0;
Point prev;
public Form1()
{
InitializeComponent();
timer = new Timer();
timer.Interval = 1000;
timer.Tick += new EventHandler(timer_Tick);
}
void timer_Tick(object sender, EventArgs e)
{
this.timer.Stop();
this.moveStart = false;
this.toolTip1.SetToolTip(this, string.Format("Mouse Hover"));
this.textBox1.Text = (++count).ToString();
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (this.prev.X == e.X && this.prev.Y == e.Y)
return;
if (moveStart)
{
this.prev = new Point(e.X, e.Y);
this.timer.Stop();
this.toolTip1.SetToolTip(this, string.Format("Mouse Move\nX : {0}\nY : {1}", e.X, e.Y));
this.timer.Start();
}
else
{
moveStart = true;
}
}
}
答案 0 :(得分:0)
最简单的方法是从MouseMove子程序中调用MouseOver子例程:
void MouseMove(object sender, MouseEventArgs e)
{
//Call the MouseHover event
MouseHover(sender, e);
}
void MouseHover(object sender, EventArgs e)
{
//MouseHover event code
}
但是,如果您想要更多地控制何时以及如何显示工具提示,则需要执行类似以下操作:
以下是一些代码,用于演示我在上面概述的内容。
class Form1
{
bool showPopup = false;
void MouseHover(object sender, EventArgs e)
{
showPopup = true;
}
void MouseLeave(object sender, EventArgs e)
{
showPopup = false;
toolTip.Hide(this);
}
void MouseMove(object sender, MouseEventArgs e)
{
if (showPopup)
{
toolTip.Show("X: " + e.Location.X + "\r\nY: " + e.Location.Y,
this, e.Location)
}
}
}
当然,您必须添加一个名为 toolTip 的ToolTip
,并将各种方法(子例程)与您控件的相应事件(Form,PictureBox等)相关联。 )。