none
ToolTip と MouseMove の怪しい関係? RRS feed

  • 質問

  • 環境:
    Visual Studio 2008 SP1 /.NET Framework 3.5 SP1
    Visual Studio 2010 /.NET Framework 4.0 

    WindowsForms で動的に ToolTip のキャプションを設定するよう実装してるうち、おかしな挙動を発見しました。

    フォームに TextBox と ToolTip を追加し、TextBox の MouseMove イベントを以下のように実装します。

    Public Class Form1
    
        Private _count As Decimal = 0D
    
        Private Sub TextBox1_MouseMove( _
            ByVal sender As System.Object, _
            ByVal e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseMove
    
            If (_count = Decimal.MaxValue) Then _count = 0D
    
            _count += _count + 1
            TextBox1.Text = _count.ToString()
            ToolTip1.SetToolTip(TextBox1, _count.ToString())
        End Sub
    
    End Class
    

    この MouseMove、XP /SP3 の場合、マウスカーソルの位置を TextBox 上で停止すると MouseMove イベントは実行されません。しかし Windows 7 の場合、マウスカーソルの位置を TextBox 上で停止しても MouseMove イベントが発生し続けます。


    しかし

    ToolTip1.SetToolTip(TextBox1, _count.ToString())
    

    の一行をコメントアウトすると、マウスカーソルの位置を TextBox 上で停止すれば、Windows 7でも MouseMove イベントが停止します。

    一応 C# で試しても状況は変わりませんでした。XP /SP3 はマウスを停止していると MouseMove イベントは発生せず。ただし Windows 7 の場合、マウスを停止しても MouseMove イベントは発生し続けます。

    これってもしかしてバグ?それとも ToolTip もしくは MouseMove の仕様かどうか、ご存知の方はおられるでしょうか?


    ひらぽん http://d.hatena.ne.jp/hilapon/
    • 編集済み ひらぽんModerator 2010年11月11日 7:05 コードの修正。でも修正するとレイアウト崩れますね(^ω^;
    2010年11月11日 5:48
    モデレータ

回答

すべての返信