2017-09-01 1 views
2

TabControlページングボタンのクリックイベントを処理することは可能ですか?組み合わせたtabHeaderの幅がコントロールの幅を超えると、ボタンが表示されます。TabControlのUpClickイベントを処理する

enter image description here

私は1つをクリックすると、全体の制御を再描画したいと思います。

+0

私は何を意味するかを示すために質問を更新しました。 – Samo

+0

再描画の目的で、 'TabControl'の' SelectedIndexChanged'イベントに登録することもできます。 – KBO

+0

アクティブなタブが変更されないため、ユーザーがボタンをクリックしたときにSelectIndexChangedが発生しません – Samo

答えて

0

これを処理する独自のイベントを追加できます。

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のを使用する場合は、「スクロール」イベントが使用可能になります:TabControl event when scrolling through tab headersから。

+0

ありがとうございます。 – Samo