2017-10-23 16 views
0

(.NET Compact Framework 3.5、Windows CE 6.0)C#Form2.ShowDialog()とマウスカーソル

マウスカーソルを非表示にしたい。
したがって、私はCurosr.Hide()を使用します。

私は2つのフォーム、Form1、Form2を持っています。
Form2のサイズがForm1より小さい。
PictureBox1はForm1にあります。
PictureBox1をクリックすると、Form2が開きます。 (モーダル)

この時点で、マウスカーソルが突然Form2の領域外に表示されます。
MouseDonw PictureBox1 - > Form2.ShowDialog - >ショーMouseCursor

私はなぜマウスカーソルが表示されない)(

をCursor.Showをやったことがありませんか?


は、私は 'のMouseDownイベント' から 'のMouseUpイベント' にForm2.ShowDialogを()移動し、次の
を追加しました。それが解決されます。どうして?

+0

既にform2にデフォルトのマウスカーソルがあるためです。フォームのinitまたはloadにカーソルを隠す必要があります。 –

+0

@BhubanShresthaありがとうございます。あなたのコメントの後、Form2のInitializerにCursor.Hide()を追加しましたが、解決されませんでした。私は他の方法にトライしました。 Form2.showDialog()を 'MouseDown Event'から 'MouseUp Event'に移動しました。それが解決されます。どうして? –

答えて

0

まず、フォームのshowやその他の「アクション」は、通常、マウスクリックイベントで行われます。それはマウスを下げてマウスを上げた後に発射されます。

通常のシーケンスを壊した場合、つまりマウスのダウンイベントでフォームを表示した場合、GUIは 'マウスの下降/移動'モードになります。たとえば、要素をドラッグするか、線を描画します。

各要素はマウスカーソルを表示/非表示できるため、ウィンドウシステムは2番目のフォームでカーソル非表示を認識しますが、マウスアップイベントが行われていないため、最初のフォームにマウスカーソルが表示されます。

基本について詳しく知りたい場合は、ネイティブのWndProcと、ウィンドウメッセージの処理方法を見てください。 Charles PetzoldによるプログラミングWindowsは、まだWindowsプログラミングの聖書です。

+0

ありがとうございます。マウスイベントはWindows CE 6.0上で動作します。 Windows CE 5.0では、Form1のMouseUpイベントが発生したため、このような問題は発生していませんでした。ありがとう! –

関連する問題