2012-04-16 5 views
1

キャプチャしたマウスのリリースに問題があります。私のアプリケーションでは、一連のアクションを実行する必要があります(つまり、自動的に次々に実行されることを意味します)。シーケンスは次のとおりです。 _オブジェクトを選択 _入力した値に従ってオブジェクトを回転させるメッセージボックスに値を入力します。メッセージボックスのブロックmouseLeftButtonUpイベント

実行時:オブジェクトをクリックすると、選択したオブジェクトのMouseLeftButtonDownイベントがアクティブになります。次に、メッセージボックスが表示されます。このメッセージボックスは、そのオブジェクトのMouseLeftButtonUpイベントをアクティブにするためにマウスをブロックします。 MouseLeftButtonUpイベントをアクティブにするにはもう一度オブジェクトをクリックする必要があります。または、アプリケーションを継続して実行できません。

誰もが私を助けることができますか?

+0

コードを表示してください。 – Likurg

答えて

2

これは、多くのコントロールがMouseUpイベントに対してのみアクションを実行する理由です。 MouseDownイベントを使用して、状態または選択を示すようなことを行います。また、マウスキャプチャ(Winformsのキャプチャプロパティ)を使用して、マウスがウィンドウの外に移動された場合でもMouseUpイベントを取得するようにします。あなたのブラウザで今すぐ試して、マウスの右ボタンを押したままにしてください。何も起こりません。リンクまたはボタンを左クリックしたときの動作はまったく同じです。

あなたのやりたいことは同じようなものです。

+0

Hans Passantありがとうございますが、アプリでもオブジェクトをドラッグアンドドロップできます。だから、私はすべてのマウスを使用しています、マウスの移動とドラッグドロップ機能のマウスアップ。私の場合、シーケンスとは、ポイントを選択してボックスに値を入力させるという意味です。選択はマウスイベントをアクティブにしませんが、ドラッグドロップ機能のマウスをアクティブにします。ボックスが表示されると、マウスアップイベントがブロックされます。したがって、オブジェクトを再びクリックしてマウスを離すまでは、オブジェクトは動いています。 – user1331344

+0

まあ、それはもちろん動作することはできません。あなたがする必要があるのは、D + Dをマウスの左ボタンで動かすまで遅延させることです。例コードは次のとおりです:http://stackoverflow.com/a/3124382/17034 –

+0

さて、これはとても役に立ちます、ありがとうございます!私は例に従ってコードを修正します:D – user1331344

関連する問題