如何在另一个类中使用类中定义的重写方法?

时间:2016-01-22 10:13:20

标签: f# functional-programming graphical-programming

我在为图形界面课程做的练习中遇到了一些问题。我正在用这种方式编写F#程序:

  • 我有一个A类,我在其中覆盖OnPaint方法;
  • 我有另一个B类,我在其中覆盖了OnPaint方法,OnMouse [Down / Move / Up]方法等。

我会将A中重写的OnPaint方法用于B中定义的重写OnPaint方法(显然,A中的OnPaint方法在A类中定义,这意味着我必须实例化A类对象)。 / p>

我的问题是:我怎么能这样做?我是否需要在A中定义一个方法,在该方法中,我使用A的OnPaint方法的相同任务传递PaintEventArgs.Graphics参数,而不是覆盖A中的OnPaint方法?

一个例子: 我要做这样的事情:

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)

或者这两个版本是一样的吗?

我问这个是因为第一个版本经常出现问题。

0 个答案:

没有答案