【发布时间】:2012-06-14 02:57:33
【问题描述】:
我正在制作一个简单的程序,当用户与之交互时,它会更改按钮的图像。当计算机鼠标进入按钮内部时,图像会突出显示,当鼠标单击时,图像会变暗,当鼠标离开按钮时,图像会变得正常。为了实现这种行为,我在 3 个图像之间更改按钮图像,但是当我单击按钮并显示模态控件时,例如一个MessageBox,当它从MessageBox返回时,按钮中的图像仍然是“鼠标内部”图像,但鼠标已经离开按钮......所以我认为button1_MouseLeave事件没有上升,但我没有了解为什么以及如何修复它...你们能帮我解决这个问题吗? 我使用的代码很简单:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace teste1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_MouseLeave(object sender, EventArgs e)
{
button1.Image = ((System.Drawing.Image)(Properties.Resources.Botao_Del_Normal));
}
private void button1_MouseEnter(object sender, EventArgs e)
{
button1.Image = ((System.Drawing.Image)(Properties.Resources.Botao_Del_Claro));
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("Test");
}
private void button1_MouseDown(object sender, MouseEventArgs e)
{
button1.Image = ((System.Drawing.Image)(Properties.Resources.Botao_Del_Clique));
}
private void button1_MouseUp(object sender, MouseEventArgs e)
{
button1.Image = ((System.Drawing.Image)(Properties.Resources.Botao_Del_Claro));
}
}
}
【问题讨论】:
-
我想我发现了部分问题...
MouseLeave在MouseUp之前被触发(当MessageBox被调用时,它会触发MouseLeave,但是当您单击确定时MessageBoxMouseUp的按钮由于单击事件而被调用)...所以即使MouseLeave设置正确的图像,MouseUp也会将其设置回“按钮内的鼠标”图像,即使鼠标不在按钮上......任何想法如何解决这个问题?MouseHover不是一个好人,因为它需要一些时间才能被解雇。