I am using an Infragistics.Win.UltraWinTabControl.UltraTabStripControl in VS2010.
I use the AppStylist to set the HotTracking appearance of the tabs. The TabStrip is positioned such that a panel containing some buttons is below slightly overlapping it (The panel is in front). Sometimes when I move the mouse from a tab (which correctly highlights when hotTracked) down to the panel below (especially when I move the mouse slowly) the hotTrack appearance stays and does not revert to the normal appearance as it should.
Is there a method I can use to force the TabStrip to refresh the tab appearances correctly.
I have tried Refresh() and Invalidate() without success.
ThanksPaul
Hello Paul,
The UltraTabControl/UltraTabStrip keeps track of the tab being hottracked using the MouseLeaveElement and MouseEnterElement events.The MouseLeaveElement event is fired under two circumstances: - When the mouse enters another element, it fires the MouseLeaveElement event for the previously element (as long as the new element is not a child of the previous element). - When the MouseLeave event is processed for the control, the ControlUIElement processes the MouseLeave event and fires any necessary events. This processing checks to see which UIElement the mouse is currently over. If the mouse is still within the Rect of the same element, it does not fire the MouseLeaveElement event as it assumes that the most moved over a child control.
In this case (where the UIElement is covered by another control), the MouseLeave event for the UltraTabControl/UltraTabStrip is fired as soon as the mouse moves over the panel. As the mouse is still within the rectangle of the TabItemUIElement but is obscured by the panel), it will not fire the MouseLeaveElement event. As the event is not fired, the currently hottracked tab is not updated.
One thing you could do is the following:
class PassThroughPanel : System.Windows.Forms.Panel
{
private const int WM_NCHITTEST = 0x84;
private const int HTTRANSPARENT = -1;
protected override void WndProc(ref Message m)
if (m.Msg == WM_NCHITTEST)
m.Result = (IntPtr)HTTRANSPARENT;
return;
}
base.WndProc(ref m);
I have created the following case for you: "CAS-81510-31MSPB". I will update you through this case.
Please do not hesitate to contact us if you need any additional assistance.