グラフィカル インターフェイス コースで行っている演習で問題が発生しました。私はこのように定義された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 つのバージョンは同じですか?
最初のバージョンで問題が発生することが多かったため、これを尋ねています。