读书人

C# 判断鼠标是不是在控件内

发布时间: 2013-03-21 10:08:17 作者: rapoo

C# 判断鼠标是否在控件内
我是想在鼠标移过控件时,用ToolTip显示控件内容。用了MouseMove事件


editor.MouseMove += new MouseEventHandler(showTip);



private void showTip(object sener, MouseEventArgs e)

if (e.X > control.Location.X && e.X < control.Location.X + control.Width && e.Y > control.Location.Y && e.Y < control.Location.Y + control.Height)
toolTip1.Show("AAAAAAAAAAAAAAAAAA",control);



这样显示的不对呀
请高手指教
[解决办法]
if (button1.Bounds.Contains(e.X,e.Y))
[解决办法]
引用:
鼠标移过控件的事件是MouseEnter,直接调用你想移过的控件的MouseEnter事件即可实现,无需判断所在位置。


+1
[解决办法]
引用:
if (button1.Bounds.Contains(e.X,e.Y))

能具体说下怎么用吗?我判断鼠标是否在按钮内
if(button1.Bounds.Contains(e.x,e.y))
{
this.button1.BackColor=Color.Red;
}
else
{
this.button1.BackColor=Color.yellow;
}
执行的效果不对啊,好像是if下面的代码不执行,什么原因啊??
[解决办法]
引用:
我没说完整。
在代码里 动态添加的好多控件,所以我需要判断鼠标停在哪个控件上,停在哪个控件上,就显示哪个控件的内容

动态添加的控件,让这些控件都注册MouseEnter事件,在事件函数中显示控件信息,如:
private void ctl_MouseEnter(object sender, EventArgs e)
{
label1.Text=((Control)sender).Text;
}
[解决办法]
一种办法:你在每一个动态添加的控件上都添加一个ToolTip.鼠标放上去就自动的给出提示了。这种方法是在生成控件时就定以后的。提示的信息也是固定的。
第二种办法:是在每个动态加载的控件上都添加MouseHover或是其他的鼠标事件上动态的添加一个Tooltip这样能动态的添加提示信息。
还有一种最笨的办法是:获得鼠标在桌面上的坐标coordenate,然后换算到当前控件的父控件上的坐标。然后比较当前的鼠标坐标和当前控件的Location.判断当前的鼠标是否在该控件上。然后动态的画一个Lable或是Richtextbox框,显示动态的信息。然后动态的清除你添加的控件。动态清除的方法可以自己做一个定时器,显示定时的时间。或是在Lable框或是RichTextBox框中MouseLeave事件中添加自销毁的代码。
[解决办法]
你的思路拧了

楼上的童鞋说得好啊,应该在动态添加控件时直接添加 tooltip


private void text_ShowTooltips()
{
Panel panel = new Panel()
{
Location = new Point(0, 0),
Size = this.ClientSize
};

this.Controls.Add(panel);

panel.Controls.AddRange(new Control[] {
new Button() { Location=new Point(100,100), Text="Button1", AccessibleDescription="This is Button1" },
new Button() { Location=new Point(100,150), Text="Button2", AccessibleDescription="This is Button2" },
new Button() { Location=new Point(100,200), Text="Button3", AccessibleDescription="This is Button3" },


new Button() { Location=new Point(100,250), Text="Button4", AccessibleDescription="This is Button4" },
new Button() { Location=new Point(100,300), Text="Button5", AccessibleDescription="This is Button5" },
});

ToolTip tips = new ToolTip();

foreach (Control ctrl in panel.Controls)
{
if (ctrl is Button && ctrl.AccessibleDescription != "")
{
tips.SetToolTip(ctrl, ctrl.AccessibleDescription);
}
}

panel.BringToFront();
}


[解决办法]
只需一个ToolTip控件,动态生成时向ToolTip控件添加一条信息就可以了

读书人网 >C#

热点推荐