I have a Windows Forms application that uses some Application.Idle handlers to change the status of controls on the form.
After I added a ListView to the form I realized the Idle-Handlers get called way too often when the mouse cursor is over the ListView. By using Spy++ I saw that when the mouse cursor is over the control (not moving) the control receives WM_MOUSEHOVER messages over an over which in turn triggers the idle event (after the message queue is empty). The same holds for TreeView-Controls.
I wonder how I can disable this behavior?
Running this code from the command prompt will show what I mean:
using System;
using System.Windows.Forms;
public class IdleTest {
    public static void Main() {
        Application.Idle += delegate {
           Console.WriteLine( 
                DateTime.Now.ToString() + " idle!" ) ;
        };
        Form f = new Form(){ Width=300 };
        f.Controls.Add(new ListView(){ Left=0,   Width=100 } );
        f.Controls.Add(new TreeView(){ Left=100, Width=100 } );
        f.Controls.Add(new TextBox() { Left=200, Width=100 } );
        Application.Run(f) ;
    }
}