ホーム ] アプリ ] クイックソートライブラリ ] グリッドコントロール ] EXIF情報ライブラリ ] 実行時間計測ラブラリ ] 多倍長演算ライブラリ ] 多倍長演算ライブラリU ] 画像処理ライブラリ ]

上へ
コンポーネント開発
イベントの捕捉
開発の手順
FreeGridの構成
データソース
セル更新

技術解説

イベントの捕捉

最終更新日:2007/04/17  新規

●概要

 エンドユーザと同列のイベント処理ではまずいことになる。

 このため、必要なイベントは、エンドユーザ(エンドプログラマ、つまり、このコントロールを使ってプログラムする者)より先に補足し、必要な処理をしないといけないこともある。

●OnXXXXXX関数

 基底クラスにあるイベント処理の関数で、通常は隠されているが、必要ならこれをオーバーライド*する。例えば、描画では、

 Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)

とすれば、基底クラスの描画処理に乗り込める。ここで、エンドプログラマより先(先か後は個別問題であるが)に自分で描画できる。エンドプログラマにイベントを渡す場合は、

 MyBase.OnPaint(e)

とすれば良い。これで、エンドプログラマが記述したデリゲート(Paintイベント処理)を探し、それを呼び出すようになる。

→*
 オーバーライドとは英語としての本来の意味は、踏み倒す、無視するなどのあまり良い意味がない。この場合は、元の処理では不満なので、自分で(強引に)処理を付加する意味となる。

●実際

  • OnPaint は、コントロール自体の外形の再描画が必要な場合に起こる。移動、隠れていた部分が再び見えた場合などである。この場合、大抵はそのクライアント領域の再描画も必要となるので、Paintイベントが起こるのである。
  • しかし、FreeGridでは、エンドプログラマがPaintイベントを処理することはないので、MyBase.OnPaint(e)は実行していない。FreeGridの場合、このOnPaint処理が最も重要で重い処理となっている。
  • マウスの各イベントは先にコントロール側で必要な処理を行い、その後渡している。これで、エンドプログラマはマウスイベント処理で、必要な正しいFreeGrid状態を把握できる。