1

私はそれを強調するためにMouseMoveでコードを書いた画像を持っています。これは私が望んでいることですが、マウスが画像を離れるとハイライトが消えますが、それを行うイベントを見つけることができないようです。VisualBasic6.0で作業しています。マウスアップとダウンのイベントを試しましたが、要件と一致しません。

ありがとう

4

5 に答える 5

2

VB6にはそのようなイベントはありません(VB.NetにはMouseLeaveがありますが)。フォームのMouseMoveイベント(およびおそらく任意のコンテナコントロールも)で何かを行う必要があります。

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  ' Unhighlight the image'
End Sub

Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  ' Highlight the image'
End Sub
于 2010-08-06T11:16:24.380 に答える
2

尊敬されている著者であり、当時VBコミュニティに優れたコンテンツを提供してくれたMarco Bellinasoによって書かれた、この正確な目的のための素晴らしい小さなocxコントロールがあります。

コントロールは「MBMouseHelper」と呼ばれます。http://www.devx.com/vb2themax/CodeDownload/19735のdevx.comからダウンロードできます。

代替テキストhttp://img25.imageshack.us/img25/3985/screencap20100809110523.jpg

MouseMoveこのコントロールを便利にするVBの組み込みイベントの使用には2つの問題があります。

  • フォームや別のコントロール、近くのラベルなど、ユーザーが画像を離れるときにマウスを置くことができるすべての場所をキャッチする必要があります
  • また、ユーザーはマウスを非常にすばやく動かしてMouseMove、画像のハイライトを解除するイベントをトリガーするウィンドウの任意の部分をジャンプできます。
于 2010-08-09T15:29:58.270 に答える
1

また、mouseleaveイベントをシミュレートする画像を大きな画像の中に入れることもできます。そうすれば、内側の画像(小さい方)を離れると、外側の画像のmousemoveイベントが発生します。また、これは、別の画像の代わりにフレームまたはラベルを使用する場合に機能します

于 2010-08-07T15:42:49.280 に答える
0

mouseMoveイベントを使用する場合に注意することの1つは、強調表示するコントロールにいるときにフラグを立て、OUTになっているときに別のフラグを立てて、マウスのxy変更ごとに同じアクションを繰り返さないようにすることです。

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  ' if imageIsHighlighted = true then
  '    Unhighlight the image'
  '    imageIsHighlighted = false
  ' end if 
End Sub

Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  ' if imageIsHighlighted = false then
  '       Highlight the image'
  '       imageIsHighlighted = True
  ' end if 
End Sub
于 2010-08-26T16:14:43.417 に答える
0

コントロールはいつでもサブクラス化できます。 これがその方法を説明する記事です。

于 2010-08-09T06:43:16.453 に答える