2

グラフィカル インターフェイス コースで行っている演習で問題が発生しました。私はこのように定義されたF#でプログラムを書いています:

  • 私はメソッド OnPaint をオーバーライドするクラス A を持っています。
  • OnPaint メソッド、OnMouse[Down/Move/Up] メソッドなどをオーバーライドする別のクラス B があります。

A でオーバーライドされた OnPaint メソッドを、B で定義されたオーバーライドされた OnPaint メソッドに使用します (明らかに、A の OnPaint メソッドはクラス A で定義されているため、タイプ A オブジェクトをインスタンス化する必要があります)。

私の質問は次のとおりです。どうすればそれを行うことができますか? A で OnPaint メソッドをオーバーライドする代わりに、A の OnPaint メソッドと同じタスクで PaintEventArgs.Graphics パラメータを渡すメソッドを A で必ず定義する必要がありますか?

例:私はこのようなことをしなければなりません:

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)

それとも、これら 2 つのバージョンは同じですか?

最初のバージョンで問題が発生することが多かったため、これを尋ねています。

4

0 に答える 0