Определение MouseEventHandler в C # - PullRequest
1 голос
/ 23 февраля 2012

Я пытаюсь определить MouseEventHandlers таким образом, чтобы приложение завершало работу при каждом щелчке или перемещении мыши или при нажатии клавиши. Я впервые использую C #, но на основании того, что я нашел в Интернете, я написал код следующим образом:

     MouseDown += new MouseEventHandler(mouseClickedResponse);
     MouseMove += new MouseEventHandler(mouseMovedResponse);
     KeyDown += new KeyEventHandler(keyResponse);

, который подключается к:

private void keyResponse(object sender, EventArgs e)
    {
        Application.Exit();
    }

    private void mouseClickedResponse(object sender, EventArgs e)
    {
        Application.Exit();
    }

    private void mouseMovedResponse(object sender, EventArgs e)
    {
        if (firstCall)     //Keeps the application from exiting immediately
            firstCall = false;
        else Application.Exit();
    }

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

Это общая сумма кода, который я написал для обеспечения контроля пользователя; я что-то упустил?

Ответы [ 4 ]

1 голос
/ 23 февраля 2012

На первый взгляд, все выглядит хорошо с вашим кодом.

Одна возможность - MouseEventHandler определяется как в пространстве имен System.Windows.Input ( MSDN ), так и в пространстве имен System.Windows.Forms ( MSDN ).

Я полагаю, что вам нужен тот, который находится в пространстве имен Forms Возможно ли использовать вместо этого имя из пространства имен Input

0 голосов
/ 06 января 2015

Изменение:

private void mouseClickedResponse(object sender, EventArgs e)

до:

private void mouseClickedResponse(object sender, MouseEventArgs e)

Теперь должно работать нормально.

0 голосов
/ 23 февраля 2012

Я исправил свою проблему - мой Form был заполнен Panels, и при перемещении кода для ввода мыши на панели все работало мгновенно.

0 голосов
/ 23 февраля 2012

Попробуйте это ...

MouseClick += new System.Windows.Forms.MouseEventHandler(Form1_mouseClickedResponse);
MouseMove += new System.Windows.Forms.MouseEventHandler(Form1_mouseMovedResponse);

, а затем

    private void Form1_mouseClickedResponse(object sender, MouseEventArgs e)
    {
        Application.Exit();
    }

    private void Form1_mouseMovedResponse(object sender, MouseEventArgs e)
    {
        Application.Exit();
    }

... где вы замените Form1 именем вашей формы.

...