2011-06-23 17 views
1

私は8つのボタンを含むUserControlを書いた。 実行時にマウスの位置を見つける方法は?

は、私は自分のページに、このユーザーコントロールを追加した - そして今、私が欲しいへ:

  1. キャッチボタンクリックイベント - 私は、ユーザーコントロールにINotifyPropertyChangedのの実装を追加し、クリックイベントに、私はイベントを送信していますページ上の画面位置 - -

  • がクリックされたボタンの正確な位置を探すページでキャッチされますこれは私がする方法を見つけることができないものです。

    助けてください...?

  • +0

    INotifyPropertyChangedを使用してカスタムイベントを伝播するのはなぜですか?プロパティ変更通知のみです。 –

    +0

    さて、上のレベルにクリックが行われたことを伝えるイベントを送信するとします。 NOw、私はまだボタンの位置を知る必要があります... – Yanshof

    答えて

    1

    必要な位置情報を含むカスタムイベント引数(例えばWhereWasIPressedArgs)を作成し、例えば、あなたのコントロールに

    をカスタムイベントを追加event EventHandler<WhereWasIPressedArgs> WhereWasIPressed;

    8ボタンコントロールでは、マウスの位置情報を使用して引数のpositionプロパティを設定し、イベントを呼び出します。実行時にマウスの位置を取得するhave a look at this link

    1

    実行時にマウスの位置を取得する唯一の方法は、e.GetPosition()を呼び出すことによってマウスイベントハンドラになります。ここで、 "e"はMouseEventArgsです。

    +0

    私は上のレベルに 'e'を送りたくありません。 'e'は単純な方法です...そして私は他の方法を探しています – Yanshof

    +0

    @ Yanshof:残念ながら、唯一の方法はe.GetPosition()を使用しています。クリーンなAPIを公開したいので "e"を公開したくない場合は、独自のクラスにラップしてAPIに必要な機能だけを公開することができます。 – RobSiklos

    0

    唯一の方法はe.GetPosition(呼び出すことにより、マウスイベントハンドラであるマウスの位置を取得する一般的な方法の詳細については

    ) - 「e」がMouseEventArgsです

    double point1 = e.GetPosition(bitmapCadView.UIElement).X;

    double point2 = e.GetPosition(bitmapCadView.UIElement).Y;

    関連する問題