Поделиться через


Шаг 5. Добавление обработчика событий MouseEnter для каждой стенки

Игра "Лабиринт" будет более трудной и интересной если каждый раз, когда указатель касается стены, возвращать указатель мыши пользователя назад к начальной позиции.Перед тем, как читать дальше, подумайте, как это можно сделать.

ссылка на видеоДля видео версии этого раздела см. в разделе Учебное руководство 2. Создание лабиринта в Visual Basic - видео 3 OR Учебное руководство 2. Создание лабиринта в c# - видео 3.

Добавление обработчика событий MouseEnter для каждой стенки

  1. Перейдите в конструктор Windows Forms и выделите любую из вновь добавленных стен.

  2. Перейдите в окно Свойства и щелкните по значку Событие, чтобы отобразить события для этой стены.Прокрутите вниз до события MouseEnter.Вместо двойного щелчка по нему введите текст wall_MouseEnter, затем нажмите клавишу ВВОД.Появится значок Событие и окно Свойства, как показано на рисунке ниже.

    Значок события

    Значок события

    Окно свойств, отображающее событие MouseEnter

    Окно свойств с событием MouseEnter

    ПримечаниеПримечание

    Если ввести имя события непосредственно в таблицу событий в окне Свойства, это прямо указывает интегрированной среде разработки создать обработчик события с этим именем и присоединить его к событию элемента управления.Часто необходимо, чтобы интегрированная среда разработки выбирала имена событий, так как имена являются логичными, использование имен облегчает другим чтение и понимание кода.Когда интегрированная среда разработки выбирает имя для обработчика событий, она использует имя элемента управления и имя события.В данном случае имена стен по умолчанию не менялись, и они выглядят как label4, label18, label25 и так далее.Поэтому, если щелкнуть по стене с именем label12, интегрированная среда разработки назовет обработчик событий как label12_MouseEnter.Путем ввода имени wall_MouseEnter, выбирается более подходящее имя.Это особенно важно при использовании одного обработчика событий для нескольких элементов управления, что будет сделано далее в этом руководстве.

  3. После нажатия клавиши ВВОД интегрированная среда разработки добавляет новый обработчик событий и присоединяет его к событию этой стены MouseEnter.В редакторе кода должен появиться вновь добавленный код, как показано на рисунке ниже.В Visual Basic указанная метка может не быть меткой с именем Label8, как показано в коде.

    Private Sub wall_MouseEnter() Handles Label8.MouseEnter
    
    End Sub
    
    private void wall_MouseEnter(object sender, EventArgs e)
    {
    
    }
    
  4. Затем добавьте вызов метода MoveToStart() вместе с комментарием, который поясняет метод.Начните с перехода к методу и добавлением оператора MoveToStart().Откроется окно IntelliSense, содержание которого показано на рисунке ниже.

    Окно IntelliSense

    Окно IntelliSense

    При добавлении метода MoveToStart(), интегрированная среда разработки добавила его в окно IntelliSense.Добавленный XML-комментарий отображается в подсказке.Это полезно, когда в программе существует множество методов.

  5. Чтобы указать IntelliSense завершить имя метода, нажмите клавишу TAB.При написании кода Visual C# code, не забывайте добавлять точку с запятой (;) в конце оператора.Затем добавьте комментарий перед инструкцией.Код должен выглядеть так, как показано ниже.В Visual Basic указанная метка может не быть меткой с именем Label8, как показано в коде.

    Private Sub wall_MouseEnter() Handles Label8.MouseEnter
        ' When the mouse pointer hits a wall or enters the panel,
        ' call the MoveToStart() method.
        MoveToStart()
    End Sub
    
    private void wall_MouseEnter(object sender, EventArgs e)
    {
        // When the mouse pointer hits a wall or enters the panel,
        // call the MoveToStart() method.
        MoveToStart();
    }
    
  6. Сохраните и выполните программу.Переместите указатель мыши над стеной, к которой присоединен обработчик событий.(если не помните стену, перемещайте указатель над каждой стеной, пока не найдете нужную). Как только указатель коснется стены, он будет отправлен назад к начальной позиции.

    Далее необходимо сделать тоже самое для оставшихся стен.Можно написать такой же обработчик событий MouseEnter для каждой из стен.Однако этот процесс будет длительным, приведет к появлению множества строк одинакового кода в программе и будет сложным для изменений.Интегрированная среда разработки предоставляет простой способ для соединения одного обработчика событий со всеми стенами.

  7. Перейдите в конструктор Windows Forms. В меню Правка выберите пункт Выделить все.

  8. Удерживая клавишу CTRL затем щелкните метку Завершить, чтобы снять выделение.В результате на панели должны остаться выделенными только стены.

  9. В окне Свойства перейдите в таблицу событий.Прокрутите содержимое окна к событию MouseEnter и щелкните поле ввода рядом с ним.В нем должна быть стрелка раскрывающегося списка.Если щелкнуть по стрелке, должен появиться список всех обработчиков событий в программе, которые можно выбрать для этого события.В данном случае в списке должен быть обработчик событий finishLabel_MouseEnter, который был добавлен ранее, и обработчик событий wall_MouseEnter, который был написан только что, как показано на рисунке ниже.

    Событие MouseEnter с обработчиками событий

    Событие MouseEnter с обработчиками событий

  10. Выделите обработчик событий wall_MouseEnter.Если выбрать неправильный обработчик событий либо случайно добавить новый обработчик событий, можно снова выделить все стены и панель, а затем выбрать нужный метод.

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

Продолжить или повторить пройденный материал