如何在 F# 中覆盖 MouseMove(或任何与此相关的鼠标事件),类似于在 C# 中的实现方式?意思是我想写这样的东西,只是为了获取当前的鼠标坐标。
override form.MouseMove e =
mouseX = e.X
mouseY = e.Y
Run Code Online (Sandbox Code Playgroud)
编辑:基本上我想访问 MouseEventArgs,在这段代码中,参数 e 被解释为 PaintEventArgs。
第二次编辑:这段代码实际上有效,只是有另一个代码块覆盖了 OnPaint 事件,所以显然我不能对 F# 中的两个覆盖使用相同的事件参数变量 (e)。
作为覆盖派生类中的虚拟方法的替代方法,您可以使用 F# 对象表达式来实现相同的结果。这对于创建覆盖行为的实例而无需定义派生类很有用。
let mutable mouseLoc = Point()
let myForm = {
new Form() with
override __.OnMouseMove args =
mouseLoc <- args.Location }
Run Code Online (Sandbox Code Playgroud)