2014-10-09 4 views
-1

По какой-то причине мои другие 2 вкладки действуют так, как будто они не регистрируются в обратном конце кода. Когда я открываю форму, я могу щелкнуть по всем вкладкам без проблем, когда я попрошу имя выбранной вкладки, она только когда-либо дает мне имя первой вкладки.Другие вкладки в tabcontrol не регистрируются

Так, например, ниже, когда я нажимаю на вкладке 2 и нажмите кнопку, что этот код является частью, в SelectedIndex в MessageBox по-прежнему 0, когда оно должно быть 1.

EDIT: Еще одно замечание заключается в том, что в приведенном ниже коде оператор if также регистрируется только для «standardRates», который является именем моей первой вкладки.

Кто-нибудь знает, почему это будет проявлять это странное поведение, или еще лучше, как его исправить?

 Dim callingTab As String = "" 

     MessageBox.Show(RatesAdmin.TabControl2.SelectedIndex) 

     If RatesAdmin.TabControl2.SelectedTab.Name = "standardRates" Then 
      callingTab = "standardRates" 
     ElseIf RatesAdmin.TabControl2.SelectedTab.Name = "reducedRates" Then 
      callingTab = "reducedRates" 
     ElseIf RatesAdmin.TabControl2.SelectedTab.Name = "disabilityRates" Then 
      callingTab = "disabilityRates" 
     End If 
+0

Является ли это с помощью стандартного WinForms Microsoft TabControl? – TyCobb

+0

Да, сэр, это тот, который находится в элементах формы окна в панели инструментов. Visual studio 2010 –

+0

Можете ли вы воспроизвести в отдельном проекте, в котором нет ничего, кроме элемента управления вкладками? – Neolisk

ответ

0

Закончен, устраняя проблему, оказывается, что это не имеет ничего общего с tabcontrol. Он работал корректно все время, моя проблема заключалась в том, что я не правильно передавал информацию своей дочерней форме.

Я перегружен мой новый(), и после этого все работало так, как надо:

Sub New(ratesAdmin As RatesAdmin) 
    InitializeComponent() 
    ' TODO: Complete member initialization 
    _ratesAdmin = ratesAdmin 
End Sub 

Private Sub AuditForm_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 
    'Setup connection to read database using stored procedure 

     Dim callingTab As String = "" 

     MessageBox.Show(_ratesAdmin.SelectedTabName) 

     If _ratesAdmin.TabControl2.SelectedTab.Name = "standardRates" Then 
      callingTab = "standardRates" 
     ElseIf _ratesAdmin.TabControl2.SelectedTab.Name = "reducedRates" Then 
      callingTab = "reducedRates" 
     ElseIf _ratesAdmin.TabControl2.SelectedTab.Name = "disabilityRates" Then 
      callingTab = "disabilityRates" 
     End If 

И в моей родительской форме:

+0

Поскольку frmRates - это новый экземпляр, вы всегда получите первую вкладку. Очень неясно, что вы здесь делаете. – LarsTech

+0

Если я не делаю это новый экземпляр он просто падает с нулевой ошибкой ссылка исключение. Я думаю, что, возможно, я выяснил эту проблему. –

+0

В этом проблема. Вам нужна ссылка на существующую форму. В фрагменте кода вы создаете форму, которую вы не видите на экране. – LarsTech

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