2016-11-15 2 views
1

У меня есть tabControl в моем приложении vb.net - у этого есть 3 вкладки. После щелчка на первой вкладке я пытаюсь сделать что-то, чтобы пользователь не смог выйти из этой вкладки, что, кажется, намного сложнее, чем я ожидал. Я просто пытаюсь отключить саму TAB - так, что они не могут оставить текущую вкладку - TabPage не должны быть отключены, так как они не должны быть в состоянии выйти из текущего ...Отключить отдельные вкладки в TabControl?

я пытаюсь что-то по пути ....

tabControl1.tabPage(1).enabled=false 

и

tabcontrol1.tabpage1.enabled=false 

и даже не пытаясь скрыть это

tabcontrol1.tabpage(1).visible=false 

И ничего не работает .........!

я даже пытались

tabPage1.hide() 

Но ничего не делает

EDIT:

Я нашел этот код - будет ли у меня что-то сделать с этим для того, чтобы отключить фактическая TAB - не TAB PAGE - я не хочу, чтобы пользователь оставил вкладку, на которой они нажимали, когда они нажимают на определенную кнопку ...

Private Sub TabControl1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles TabControl1.DrawItem 

    Dim g As Graphics 
    Dim sText As String 
    Dim iX As Integer 
    Dim iY As Integer 
    Dim sizeText As SizeF 
    Dim ctlTab As TabControl 
    ctlTab = CType(sender, TabControl) 
    g = e.Graphics 

    sText = ctlTab.TabPages(e.Index).Text 

    sizeText = g.MeasureString(sText, ctlTab.Font) 

    iX = e.Bounds.Left + 6 

    iY = e.Bounds.Top + (e.Bounds.Height - sizeText.Height)/2 

    g.DrawString(sText, ctlTab.Font, Brushes.Black, iX, iY) 

End Sub 

Нашел здесь ... http://www.dreamincode.net/forums/topic/125792-how-to-make-vertical-tabs/

+0

Я рекомендую использовать 'Option Explicit On', потому что строчные буквы после точек выглядят подозрительными. Я думаю, что это что-то вроде 'tabControl1.TabPages (1) .Enabled = False' – Slai

+0

@slai Я перепечатал код здесь из своего приложения и не копировал/вставлял – BobSki

+1

Не скажет, что это правильный путь, но я просто заставляю их на какой вкладке я хочу, чтобы они включались в свойство '.SelectedTab'. – topshot

ответ

1

С помощью @Hans Passant Я сделал это, чтобы решить эту проблему ....

Private Sub TabControl1_Selecting(sender As Object, e As TabControlCancelEventArgs) Handles TabControl1.Selecting 

     e.cancel=True 

End Sub 

В моем случае это отлично работает ...... ..

1

Они скрывают Enabled в окне свойств, но он частично работает. Он не отключит TabPage, но в качестве контроля контейнера он отключит все дочерние элементы управления. «Трюк», то становится, как передать пользователю, что та или иная вкладка доступна: для этого используйте свойство изображения:

Результат:

enter image description here

Вы можете приукрасить к дайте понять, например, метка с «Шаг 1 должен быть завершен первым». Вы можете еще вмешаться, чтобы остановить изменение вкладки с SelectedIndexChanged события, но так как они не могут взаимодействовать с любым контролем, нет никакой реальной необходимости.

Вы также можете использовать часть изображения с ловушкой SelectedIndexChanged событий, как средство, чтобы сказать им, что это не доступно.


Существует еще один способ, но другие альтернативы проще.Это может работать нормально для сценария мастера с помощью кнопки «Далее >>» типа

  • Создания списка (TabPage)
  • страниц Магазина 1-N в нем
  • удаления страницы 1-N от TabControl (выезд TabPage (0))
  • Когда они попали «Next`, добавьте следующую страницу назад к контролю

Пример:

Select Case TabControl1.TabPages.Count 
    Case 1 
     TabControl1.TabPages.Add(Pgs(0)) 
    Case 2 
     TabControl1.TabPages.Add(Pgs(1)) 
    ... 
End Select 

Если есть кнопка «Создать Foo» для мастера через шаги для нового Foo, просто удалите страницы 1-N еще раз. Я не люблю управление видимостью и видимостью управления, но это может пригодиться, когда Step Two может меняться в зависимости от значения на шаге 1 (т.е. любой из TabPage 2, 3 или 4 может использоваться для шага 2 в зависимости от ...) ,

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