События панели не будут работать в c#

#c# #winforms

#c# #winforms

Вопрос:

Всем привет, я борюсь с некоторой проблемой в проекте из колледжа. Я создаю игру «4 в ряд» на c # для проекта по моему курсу c # в моем колледже.

Я создал форму с именем GameForm и внутри нее добавил панель с именем panelBoardGame. к этой игре panelBoardGame я добавил массив меток, которые будут интерактивными (для выполнения хода), и я также добавил матрицу меток, чтобы представлять саму доску.

Теперь моя задача состоит в том, чтобы всякий раз, когда мышь находится внутри области панели, изображение определенного игрока перемещается вместе с курсором, пока оно находится внутри области панели. когда мышь находится за пределами области, изображение монеты не будет отображаться.

Для этого я попытался запустить события OnMouseEnter, onMouseLeave в panelBoardGame, но почему-то они даже не были выполнены. Всякий раз, когда моя мышь находится внутри области panelBoardGame, код внутри функции panelBoardGame_MouseMove(……) не выполняется.

Кто-нибудь может мне с этим помочь?

Поскольку я новичок здесь, я не могу публиковать изображения, но я загрузил изображение сюда Изображение формы

Вот изображение формы, внутри нее с черной рамкой вокруг нее находится панель, а внутри панели я добавил метки

Комментарии:

1. я добавил изображение формы

Ответ №1:

Скорее всего, события перемещения и наведения курсора идут к самому верхнему элементу управления (меткам). Отображается ли какая-либо из ваших панелей?

Возможно, вам удастся захватить мышь в событии MouseEnter панели.

 boardPanel.Capture = true;
  

Но это может повлиять на управление мышью в ярлыках.

В целом, вы, вероятно, обнаружите, что исправить это (пользовательский интерфейс) намного сложнее, чем кажется. Рассмотрите более простой дизайн «действие по щелчку». Для начала.

Комментарии:

1. События формы выполняются, но события панели — нет. Например. GameForm_OnMouseEnter / Move работает, но panelBoardGame_OnMouseEnter / Move не выполняется

Ответ №2:

Позвольте мне угадать, ваши метки полностью покрывают область панели. В Windows события мыши получает только верхний элемент управления. Поэтому, когда мышь находится над одной из ваших меток, события мыши переходят к метке, а не к панели, содержащей метку. Поэтому установите обработчик событий MouseMove на свои метки, и вы увидите, что они выполняются.

Комментарии:

1. Да, надписи занимают всю область на панели. Я хочу, чтобы всякий раз, когда мой курсор перемещается в области панели, за ним следовало изображение монеты, а когда курсор перемещается за пределы панели, я хочу, чтобы монета исчезала