在TabControl中处理upDown分页按钮OnClick事件

时间:2017-09-01 09:46:38

标签: c# winforms

是否可以处理TabControl分页按钮的点击事件?当合并的tabHeader宽度超出控件的宽度时,会出现按钮。

enter image description here

如果点击一个,我想重绘整个控件。

1 个答案:

答案 0 :(得分: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,那么"滚动"会有活动。