UltraTabControl Tab Header MouseOver 기능

Infragistincs.Win.UltraTabControl 사용중 탭페이지 헤더 영역에 마우스가 들어가면 툴팁(Tooltip)을 표시한다.
UltraTabControl 의 복잡한 Tab 관리 덕에 원하는 기능이 쉽게 구현되지 않는다.
그래서 MouseEnter, MouseHover 이벤트 사용하려니 Mouse 좌표가 전달되지 않아서 MouseMove 이벤트를 사용해서 헤더 영역에 마우스가 들어올때 해당 탭의 툴팁을 변경하도록 했다.

아래 코드를 사용한다.

항상 그렇지만 더 간단한 방법이 있을 수도 있다.

private void tabCtrl_MouseMove(object sender, MouseEventArgs e)
{
    Infragistics.Win.UIElement uiElement = (sender as UltraTabControl).UIElement.ElementFromPoint(new Point(e.X, e.Y));
    string strToolTipText = string.Empty;

    if (uiElement != null)
    {
        UltraTab tab = (UltraTab)uiElement.GetContext(typeof(UltraTab));
        
        if (tab != null)
        {
            if (tab.TabControl.Tag == null || tab.Key != tab.TabControl.Tag.ToString())
            {
                // 마우스가 올려진 탭헤더가 변경되는 경우 Tooltip Text 를 재설정
                switch (tab.Key)
                {
                    case "TAB-KEY-1":
                        strToolTipText = "Mouse Hover on TAB-KEY-1 header";
                        break;
                    case "TAB-KEY-2":
                        strToolTipText = "Mouse Hover on TAB-KEY-2 header";
                        break;
                    case "TAB-KEY-3":
                        strToolTipText = "Mouse Hover on TAB-KEY-3 header";
                        break;
                    default:
                        strToolTipText = string.Empty;
                        break;
                }

                tab.TabControl.Tag = tab.Key;

                this.baseToolTip.SetToolTip(tab.TabControl, strToolTipText);
            }

        }
    }
}

댓글 남기기