从水平移动停止鼠标光标,但仍想捕获MouseMove事件

时间:2011-05-12 07:47:46

标签: c# .net winforms events cursor

在我的winforms应用程序中,我有一个打开下拉菜单的功能,您可以向左或向右移动光标以选择子选项。但是,我不希望光标移动,我只想让它们自己的子选项向左或向右移动(取决于鼠标试图移动的方向)。我希望这对你有意义。

有没有人知道如何阻止光标在特定方向上移动,同时仍然能够在用户“移动”鼠标时捕获鼠标移动事件?

感谢任何帮助,谢谢!

3 个答案:

答案 0 :(得分:6)

您不应该尝试实现这一点,因为它会破坏所有用户界面标准,并且会让用户感到困惑。您的应用程序无法决定鼠标应该移动的位置。如果你想实现允许导航选择的其他方式,那么我建议调查其他选项。

答案 1 :(得分:2)

我认为你根本不应该实施这样的解决方案。

但是,您可以将鼠标光标位置设置回MouseMove处理程序中的原始位置。但是你必须在设置位置之前删除处理程序并在此之后再次添加它们。您可以通过pInvoke设置鼠标位置。怎么做,你可以在这里找到http://pinvoke.net/default.aspx/user32.mouse_event

答案 2 :(得分:1)

您可以手动设置光标位置

    private void Form1_MouseMove(object sender, MouseEventArgs e)
    {
        Cursor.Position = new Point(400,400);
        Console.WriteLine("fired");
    }