C # Невозможно выполнить щелчок мыши (WinForms) - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть кнопка и несколько PictureBox.PictureBoxes подключены к MouseHover и MouseLeave Events.OnMouseEnter / OnMouseLeave Кнопка отображается / скрывается в определенном месте PictureBox.Назначение кнопки - отображать OpenFileDialog при нажатии.Событие назначено;Щелкает (визуально);однако он не достигает точки останова / метода щелчка.Я мог бы подумать, что если я вытащу кнопку из области PictureBox (в другом месте формы);Включить и показать сразу после загрузки формы;оно достигнет точек останова.Любая подсказка, почему это могло произойти?Любая помощь будет оценена.Заранее спасибо

Обновление: Добавлен мой код ниже.

private void PicBox_MouseEnter(object sender, EventArgs e)
{
    var pic = sender as PictureBox;

    ShowButton_LoadPhoto(pic);
    SelectedPictureBoxName = pic.Name;
}

private void PicBox_MouseLeave(object sender, EventArgs e)
{
    btn_LoadPhoto.Visible = false;
}

private void ShowButton_LoadPhoto(PictureBox pic)
{
    var locX = pic.Location.X + pic.Size.Width - btn_LoadPhoto.Size.Width - 3;
    var locY = pic.Location.Y + pic.Size.Height - btn_LoadPhoto.Size.Height - 3;

    btn_LoadPhoto.Location = new Point(locX, locY);

    btn_LoadPhoto.Enabled = true;
    btn_LoadPhoto.Show();
}

private void BtnLoad_Click(object sender, EventArgs e)
{
    MessageBox.Show("Test");
}

Класс дизайнера:

    this.btn_LoadPhoto.Click += new System.EventHandler(this.BtnLoad_Click);

1 Ответ

0 голосов
/ 14 декабря 2018

Хорошо;это было немного очевидно;все же легко пропустить.

Я программно создал кнопку и установил все вручную как можно точнее.Это помогло выяснить причину проблемы.

Проблема: Всякий раз, когда происходит "PicureBox.OnMouseLeave";Событие Button.Click становится недоступным / переопределенным (даже если кнопка видима и находится в верхней части PictureBox).

Примечание: Интересно;с новой (программно созданной) кнопкой;IDE покажет другое поведение;и другие отделения позволяют пользователю понять причину, по которой это происходит.

Ответ: Событие OnMouseLeave конфликтовало с событием Click.

Примечания: В отличие от предыдущего способа («Отбрасывание кнопки на форме»);Программно создавая кнопку;Среда IDE просто скрывала кнопку всякий раз, когда мышь перемещалась в другой элемент управления (в данном конкретном случае; если пользователь хотел нажать кнопку).Ранее;этого не произойдет.Кнопка будет видна перед элементом управления.Но событие щелчка не сработало бы (ни между точками останова между ними). ​​

Спасибо за помощь и быстрые ответы.

...