在C#中定义MouseEventHandler

时间:2012-02-23 01:52:29

标签: c# mouse mouseevent screensaver

我正在尝试定义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 个答案:

答案 0 :(得分:1)

从表面上看,代码的一切看起来都不错。

一种可能性 - MouseEventHandlerMSDN)命名空间以及System.Windows.Input命名空间(MSDN)中都定义了System.Windows.Forms

我相信你想要的是Forms命名空间中的那个。您是否可能使用Input命名空间中的那个?

答案 1 :(得分:0)

试试这个......

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替换为表单名称。

答案 2 :(得分:0)

我解决了我的问题 - 我的Form充满了Panels,并且通过将鼠标输入的代码移动到面板上,一切都立即起作用。

答案 3 :(得分:0)

变化:

private void mouseClickedResponse(object sender, EventArgs e)

为:

private void mouseClickedResponse(object sender, MouseEventArgs e)

它应该可以正常工作。