如何在F#中覆盖MouseMove(或任何鼠标事件),类似于在C#中完成的操作?意思是我想写这样的东西,只是为了得到当前的鼠标坐标。
override form.MouseMove e =
mouseX = e.X
mouseY = e.Y
编辑:基本上我想访问MouseEventArgs,在这段代码中,参数e被解释为PaintEventArgs。
第二次编辑:这段代码实际上有效,只是在OnPaint事件上有另一个带有覆盖的代码块,所以显然我不能对F#中的两个覆盖使用相同的事件参数变量(e)。
答案 0 :(得分:4)
作为替代派生类中的虚方法的替代方法,可以使用F#对象表达式来实现相同的结果。这对于创建重写行为的实例非常有用,无需定义派生类。
let mutable mouseLoc = Point()
let myForm = {
new Form() with
override __.OnMouseMove args =
mouseLoc <- args.Location }
答案 1 :(得分:2)
我认为您想要的方法称为OnMouseMove
。
type MyForm() =
inherit Form()
override this.OnMouseMove(e) = printfn "Mouse is at %d %d" e.X e.Y