仅在按下左键单击时捕获鼠标移动事件

asm*_*smo 1 .net c# events winforms

只有当鼠标按下鼠标左键移动时,我才需要更新控件.我通常只是检查e.Button属性,但它在MouseEnter事件中不可用.

void MyControl_MouseEnter(object sender, EventArgs e)
    {
        // MouseEventArgs needed to check this

        // if (e.Button == MouseButtons.Left)
        // {
        //     update MyControl
        // }
    }
Run Code Online (Sandbox Code Playgroud)

你会怎么做到这一点?

Han*_*ant 5

使用静态Control.MouseButtons属性.例如:

    private void panel1_MouseEnter(object sender, EventArgs e) {
        if (Control.MouseButtons == MouseButtons.Left) {
            // etc...
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是非常难以得到持续,无论用户点击获取压是要捕捉鼠标,防止控制的MouseEnter事件烧制而成的鼠标按钮.它也是用户完全无法发现的UI.考虑一个更好的鼠标陷阱.