F# 如何在另一个类中使用在一个类中定义的重写方法?
我在为图形界面课程做的练习中遇到了一些问题。我正在用F#编写一个程序,定义如下:F# 如何在另一个类中使用在一个类中定义的重写方法?,f#,functional-programming,graphical-programming,F#,Functional Programming,Graphical Programming,我在为图形界面课程做的练习中遇到了一些问题。我正在用F#编写一个程序,定义如下: 我有一个类a,在其中我重写了OnPaint方法 我还有另一个类B,在其中我重写了OnPaint方法、OnMouse[Down/Move/Up]方法等 我将使用A中重写的OnPaint方法替换B中定义的重写的OnPaint方法(显然,A中的OnPaint方法是在类A中定义的,这意味着我必须实例化类型A对象) 我的问题是:我该怎么做?我是否需要在中定义一个方法,在该方法中传递一个PaintEventArgs.Gra
- 我有一个类a,在其中我重写了OnPaint方法李>
- 我还有另一个类B,在其中我重写了OnPaint方法、OnMouse[Down/Move/Up]方法等
type Ellipse() =
...
override this.OnPaint e =
e.Graphics.DrawEllipse(10.f, 10.f, 30.f, 30.f)
type classThatUseEllipse() =
let ell = new Ellipse()
...
override this.OnPaint e =
ell.OnPaint(e)
还是像这样的
type Ellipse() =
...
let myOnPaint (e:PaintEventArgs) =
e.Graphics.DrawEllipse(10.f, 10.f, 30.f, 30.f)
type classThatUseEllipse() =
let ell = new Ellipse()
...
override this.OnPaint e =
ell.myOnPaint(e)
或者这两个版本是相同的
我问这个问题是因为第一个版本经常会出现问题。你真的不应该直接调用onpaint。相反,只需使子对象无效(这甚至可能不是必需的)?类似于:ell.Invalidate()?这是否也适用于其他被重写的方法(即OnMouse[Down/Move/Up])?您能否具体说明问题?第一个版本给你带来了什么问题?实际上,这个错误出现在一个类似的例子中,在这个例子中,我做了前面描述的相同的事情,错误消息是:“无法从此代码位置访问方法‘OnPaint’。”听起来像是可访问性修饰符问题?OnPaint的可访问性是什么?