2016-04-27 1 views
0

Я использую Microsoft Visual Studio 2013 и пишу в C#. Я написал потомка класса TabControl и переопределил метод OnClick, а затем изменил существующий элемент TabControl, чтобы использовать новый класс. Все компилируется и запускается, моя точка останова в конструкторе достигается, но он не использует переопределение OnClick! Вот код потомка TabControl, заблаговременно за любую помощь!Overridden C# TabControl OnClick не называется

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace LumaSense.Imaging.Calibration.UI 
{ 
    public partial class TabControlModified : TabControl 
    { 
     public TabControlModified() 
     { 
      InitializeComponent(); 
     } 

     private bool superuser; 
     public int lastTabSelectedIndex = 0; 

     public bool Superuser 
     { 
      get { return superuser; } 
      set { superuser = value; } 
     } 

     public int LastTabSelectedIndex 
     { 
      get { return lastTabSelectedIndex; } 
      set 
      { this.lastTabSelectedIndex = value; } 
     } 

     protected override void OnClick(EventArgs e) 
     { 
      // SelectedIndex and tab have already changed before we get here 
      if (this.superuser == false) 
      { 
       if (this.SelectedIndex <= this.lastTabSelectedIndex) 
       { 
        this.LastTabSelectedIndex = this.SelectedIndex; 
        base.OnClick(e); 
       } 
       else 
       { 
        base.OnClick(e); 
        this.SelectedIndex = lastTabSelectedIndex; 
       } 
      } 
      else 
      { 
       this.LastTabSelectedIndex = this.SelectedIndex; 
       base.OnClick(e); 
      } 
     } 
    } 
} 
+0

Когда вы создаете экземпляр этого настраиваемого элемента управления вкладками, добавляете ли вы какие-либо страницы в элементы управления? Если нет страниц, на нем не будут отображаться вкладки, которые при нажатии будут запускаться, чем метод OnClick. – Mikanikal

ответ

0

Этот фрагмент работает отлично. Вам нужно убедиться, что вы добавили страницы в элемент управления вкладки, чтобы вкладки отображались и были доступны пользователю для клика.

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     var mTab = new MyTab(); 
     mTab.Location = new System.Drawing.Point(100, 100); 

     // The OnClick will only work on the 
     // Tabs themselves so Pages must be added to display the Tabs. 
     var mtabPage1 = new System.Windows.Forms.TabPage(); 
     mTab.Controls.Add(mtabPage1); 

     this.Controls.Add(mTab); 
    } 

    class MyTab : TabControl 
    { 
     protected override void OnClick(EventArgs e) 
     { 
      MessageBox.Show("I was clicked."); 

      base.OnClick(e); 
     } 
    } 
} 
+0

Я узнал, что с помощью Отмена выбора и выбора вместо создания потомка TabControl исправлена ​​проблема. Так или иначе, при использовании потомка TabControl, добавляя привязку Reactive UI к TabControlModified .SelectedIndex перепутали вещи, а переопределенный OnClick больше не вызывал. – Anne

0

я узнал, что с помощью убирая и выбор вместо создания потомка TabControl исправили проблему. Так или иначе, при использовании потомка TabControl, добавляя привязку Reactive UI к TabControlModified .SelectedIndex перепутали вещи, а переопределенный OnClick больше не вызывал.

 Смежные вопросы

  • Нет связанных вопросов^_^