2017-09-01 116 views
2

是否可以處理TabControl分頁按鈕的點擊事件?當合並的tabHeader寬度超過控件的寬度時,會出現按鈕。處理TabControl中的DownClick分頁按鈕OnClick事件

enter image description here

我想重繪整個控制,如果單擊之一。

+0

我更新了問題以顯示我的意思。 – Samo

+0

您也可以在「TabControl」的「SelectedIndexChanged」事件上註冊以進行重繪。 – KBO

+0

當用戶點擊一個按鈕時,SelectIndexChanged不會觸發,因爲活動選項卡不會更改 – Samo

回答

0

您可以添加自己的事件來處理該事件。從TabControl event when scrolling through tab headers

public class TabConrolEx : TabControl { 
    public event ScrollEventHandler Scrolling; 

    private const int WM_HSCROLL = 0x114; 
    private int oldValue = 0; 

    protected override void WndProc(ref Message m) { 
    base.WndProc(ref m); 

    if (m.Msg == WM_HSCROLL) { 
     this.OnScrolling(new ScrollEventArgs(((ScrollEventType)LoWord(m.WParam)), 
     oldValue, HiWord(m.WParam), ScrollOrientation.HorizontalScroll)); 
    } 
    } 

    protected void OnScrolling(ScrollEventArgs e) { 
    if (Scrolling != null) { 
     Scrolling(this, e); 
    } 
    if (e.Type == ScrollEventType.EndScroll) { 
     oldValue = e.NewValue; 
    } 
    } 

    private int LoWord(IntPtr dWord) { 
    return dWord.ToInt32() & 0xffff; 
    } 

    private int HiWord(IntPtr dWord) { 
    if ((dWord.ToInt32() & 0x80000000) == 0x80000000) { 
     return (dWord.ToInt32() >> 16); 
    } else { 
     return (dWord.ToInt32() >> 16) & 0xffff; 
    } 
    } 
} 

如果您使用此TabControl的在您的形式,一個「滾動」事件將可用。

+0

謝謝,此工作正常。 – Samo