5

透明なウィンドウを使用する wpf プロジェクトがあり、この透明なウィンドウ スタイルをダイアログ ウィンドウとmainwindow.

同じウィンドウ スタイルを使用するダイアログ ウィンドウを閉じると、自分のDragMove()イベントでエラーが発生します。MainWindowこれをさらに奇妙にするために、この例外はmouseleftbutton、 のラベルでイベントを処理するときにのみ発生Status BarMainWindowます。ボタンのラベルを交換mouseleftbuttondownし、clickイベントに置き換えた場合、エラーは発生しません。

奇妙なことに、ポップアップするダイアログ ウィンドウは を実装していませdragmovemainwindow。私のコード実行が呼び出し後にdragmove戻った後、どういうわけか呼び出されます。mainwindowshowdialog()

現在、私にとって簡単な修正は、ラベルをボタンに交換し、代わりにクリック イベントを接続することです。

ただし、この問題の原因と、クリック イベントが機能するのにマウス イベントが惨めに失敗する理由について聞きたいと思っています。

私の「StatusBar」はstackpanel、ラベルと他のスタックパネル (より多くのラベルを含む) を持つ単純なものです。

他の誰かが以前にこの問題と戦ったことがありますか? この例外をキャプチャしてキャンセルできるように、何らかのmouseclickイベント ハンドラー オーバーライドを実装する必要がありますか?

必要に応じて再現コードを提供できます。私はここで十分なヒットを得dragmoveたので、これが誰かにとって簡単なものであることを願っています.

助けてくれてありがとう!

4

3 に答える 3

4

今日は脳が正常に働いていません。このシナリオでのイベントのルーティングを忘れていました。マウスボタンが押されたときに発生する routedevent の Handled プロパティを設定するだけで済みました。どういうわけか、スレッドを投稿する前にデバッガーでそれを見逃しました。

于 2010-10-06T20:57:07.643 に答える
1

ボーダレス ウィンドウを移動可能にする「正しい」方法 --> https://stackoverflow.com/a/3275712/146032

イベント MouseLeftButtonDown によってトリガーされた場合にのみ DragMove を呼び出すようにし、e.Handled=true; を使用してイベントを処理することを忘れないでください。

于 2012-03-07T22:00:08.610 に答える