Отключение движения мыши и кликов в целом в С#

На работе я тренер. Я собираю уроки, чтобы научить людей "делать вещи" без мыши... Когда-либо видели, как люди нажимают "login" текстовое поле, набирают, берут мышь, нажимают "пароль", набирают свой пароль, затем снова набирают мышь щелкнуть кнопку "подключиться" под?

Итак, я научу их, как делать все это без мыши (среди многих других вещей, конечно)

В конце курса я сделаю им сдачу своего рода экзамена.

Итак, я создаю небольшое приложение на основе мастера, в котором я представляю примеры для форм, похожих на simili-real-life, для заполнения, но я хочу программно отключить их мышь, пока они делают этот тест.

Однако, еще в мастере, я должен позволить им снова использовать свою мышь.

Есть ли, возможно, простой способ просто отключить мышь некоторое время и снова включить ее позже?

Я на С# 2.0, программируя под VС# 2k5, если это важно

Ответ 1

Сделайте свою реализацию формы IMessageFilter.

Затем добавьте следующий код в форму:

    Rectangle BoundRect;
    Rectangle OldRect = Rectangle.Empty;

    private void EnableMouse()
    {
        Cursor.Clip = OldRect;
        Cursor.Show();
        Application.RemoveMessageFilter(this);
    }
    public bool PreFilterMessage(ref Message m)
    {
        if (m.Msg == 0x201 || m.Msg == 0x202 || m.Msg == 0x203) return true;
        if (m.Msg == 0x204 || m.Msg == 0x205 || m.Msg == 0x206) return true;
        return false;
    }
    private void DisableMouse()
    {
        OldRect = Cursor.Clip;
        // Arbitrary location.
        BoundRect = new Rectangle(50, 50, 1, 1); 
        Cursor.Clip = BoundRect;
        Cursor.Hide();
        Application.AddMessageFilter(this);
    }  

Это скроет курсор, сделайте так, чтобы они не могли его переместить и отключить правую и левую кнопки мыши.

Ответ 2

Вы ищете метод Cursor.Hide().

Обратите внимание, что курсор все равно будет перемещаться, он просто не будет виден.
Если вы работаете с включенными визуальными стилями, все равно можно будет использовать мышь, отслеживая эффекты зависания.
Однако любой, кто может это сделать, вероятно, не нуждается в вашем курсе.

Более "забавным" способом сделать это было бы hanle событие MouseMove и установить Cursor.Position, чтобы предотвратить перемещение мыши в вашу панель.

Ответ 3

Как насчет другого подхода (мышление из "нужно запрограммировать решение для всего" ): прежде чем начинать занятия, отключите всех мышей... пересоедините их, когда мышь понадобится снова.