2012-04-03 24 views
0

私のプロジェクトでは、画面上にポイントのセットを表示するいくつかのコントロールがあります。私は、これらのコントロールのすべてに対して "lasso selection"機能を提供したいと考えています。これを行うために、私は "Lasso"と呼ばれるクラスを作成しました。これは、マウスの動きの追跡、ローソの表示、ローソが閉じられたときのイベントの発生などです。しかし、投げ縄を使用するために、私はこのようなコードを記述する必要があります。コンポーネントを使用してコントロールにカスタムUIビヘイビアを追加する

public partial class MyControl : UserControl { 

    private Lasso lasso; 

    public MyControl() { 
     InitializeComponent(); 

     lasso = new Lasso(); 
     lasso.HookEvents(this); 
    } 
} 

「lasso.HookEvents」方法は、ホスト制御のためのマウスイベントに投げ縄をフックの世話をします。

私がしたいことは、デザイン時に "Lasso"コンポーネントをツールボックスからUserControlまたはFormに単にドラッグするだけで、コード自体を書く心配はありません。投げ縄は魔法のように「ちょうどうまくいく」べきです。それを行う方法はありますか?私はLassoクラスをComponentから拡張しようとしましたが、Designerに "lasso.HookEvents(this)"呼び出しを自動的に生成させる方法を理解できませんでした。

答えて

0

可能であれば、Lassoオブジェクトでマウスイベントをキャプチャするだけです。それが不可能であるか動作しない場合:Lassoクラスで、Loadedイベントにハンドラを追加し、ハンドラでthis.HookEvents(this.Parent);を実行します。

+0

残念ながら、LassoクラスはControlではなくComponentを拡張しています。したがって、「ロード済み」イベントはありません。私はLassoが独自のUIを持っていないのでControlを拡張したくない。親のUI動作を提供するだけです。 – Bugmaster

関連する問題