winform界面,在form上有个panel1,panel1有个子控件button1,现在我想实现当鼠标进入panel1时button1显示,鼠标离开panel1时button1隐藏,现在发现鼠标经过button1时也会触发panel1的mouseleave事件,我这样写如下代码,没有效果,请高手帮忙修改:
private void panel1_MouseEnter(object sender, EventArgs e)
{
button1.Visible = true;
} private void panel1_MouseLeave(object sender, EventArgs e)
{
button1.Visible = false;
} private void button1_MouseEnter(object sender, EventArgs e)
{
button1.Visible = true;
} private void MainForm_Load(object sender, EventArgs e)
{
button1.MouseEnter += new EventHandler(panel2_MouseEnter);
} private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("1");
}
private void panel1_MouseEnter(object sender, EventArgs e)
{
button1.Visible = true;
} private void panel1_MouseLeave(object sender, EventArgs e)
{
button1.Visible = false;
} private void button1_MouseEnter(object sender, EventArgs e)
{
button1.Visible = true;
} private void MainForm_Load(object sender, EventArgs e)
{
button1.MouseEnter += new EventHandler(panel2_MouseEnter);
} private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("1");
}
解决方案 »
- C#中WinForm问题
- C#自己写的activex却不能手工注册~
- c# 读取.mdi格式的文件
- RegularExpressionValidator 的错误信息如何放在另外的一个label里面,而且在cs文件中怎么得到RegularExpressionValidator的返回值?
- 重新修改密码。。。
- 怎么让一段代码在指定的时间自动执行?
- C#的构造函数
- 有人在C#中将Class Library封装成com吗?请教。
- 怎么样利用面向对象的思维去考虑程序?看似简单的问题,确不简单
- 关于插值查找的一点疑问,感觉这个算法很不严谨
- System.Threading.Timer 的问题 在线等。。。
- 写入XML文件时提示未能找到文件,这是什么原因呢?请前辈们指点一下!
可以麻烦点:
panel1_MouseLeave里面判断一下
根据鼠标位置如果鼠标位置被包在panel范围内就不要隐藏button
这样就可以了。。
当然可能有更佳的解决方案。
看楼下的了
panel1是个矩阵,每次触发MouseLeave的时候你可以开启一个线程来处理你的事情,
为什么要用线程,你需要休眠50毫秒,然后等待
button1_MouseEnter的事件触发以后,对一个全局变量进行赋值,然后判断一下就行了,这样做的好处是如果你有button2,就不会受到这个方法的干扰了。第二种做法
比较直接,每次
MouseLeave触发后,判断鼠标在WINFROM上的坐标,进行计算,虽然比较麻烦但是一劳永逸,你还可以封装一下。将来接着用。。