У меня есть меньшее изображение в моей форме. Когда пользователь нависает над изображением, он отображает увеличенный вид изображения (который следует за мышью, но остается на некотором расстоянии от мыши). Для этого я создаю форму без формBormStyles, когда курсор наводит изображение.MouseLeave обнаружение не работает с ImageForm
Проблема, с которой я столкнулся, заключается в том, что первая форма, кажется, больше не обнаруживает, что мышь зависает или покидает PictureBox после активации формы. Форма также не следует курсору.
Вот похудела версия о том, что у меня есть:
C#
bool formOpen = false;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
pictureBox1.MouseHover += pictureBox1_MouseHover;
pictureBox1.MouseLeave +=pictureBox1_MouseLeave;
}
void pictureBox1_MouseHover(object sender, EventArgs e)
{
if (formOpen == false)
{
Form form = new Form();
form.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
form.BackColor = Color.Orchid;
//Show the form
form.Show();
form.Name = "imageForm";
this.AddOwnedForm(form);
//Set event handler for when the mouse leaves the image area.
//form.MouseLeave += form_MouseLeave;
//Set the location of the form and size
form.BackColor = Color.Black;
form.Dock = DockStyle.Fill;
form.Size = new Size(30, 30);
form.BackgroundImageLayout = ImageLayout.Center;
this.TopMost = true;
formOpen = true;
form.Location = new Point(Cursor.Position.X, Cursor.Position.Y);
}
}
private void pictureBox1_MouseLeave(object sender, EventArgs e)
{
//MessageBox.Show("Worked");
}
}
Когда мышь покидает PictureBox, вы сбросить 'formOpen' обратно' false'? –
Да, таким образом это не постоянно открывает формы, когда вы наводите изображение. – Corey
Не знаете, почему вы используете вторую форму в первом месте. но проблемы, по-видимому, исходят из самых высоких по умолчанию, крадя фокус. См. [Ответ Ганса здесь для возможного решения] (http://stackoverflow.com/questions/3729899/opening-a-winform-with-topmost-true-but-not-having-it-steal-focus) – TaW