Reputation: 1552
I have a tabControl in my vb.net application - that has 3 tabs. Upon a click on the first tab I'm trying to do something so that user will not be able to get out of that tab - which seems to be a lot more difficult that I anticipated. I'm simply trying to disable the TAB itself - so that they are unable to leave the current tab - the TABPAGE does not have to be disabled since they are not supposed to be able to get out of the current one...
i'm trying something along the way of....
tabControl1.tabPage(1).enabled=false
and
tabcontrol1.tabpage1.enabled=false
and even trying to hide it
tabcontrol1.tabpage(1).visible=false
And nothing seems to work.........!
i've even tried
tabPage1.hide()
But doesn't do anything
EDIT:
I found this code - will I have to do something with this in order to disable the actual TAB - Not TAB PAGE - I don't want user leaving the tab they've on when they click a specific button...
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
Found this here...http://www.dreamincode.net/forums/topic/125792-how-to-make-vertical-tabs/
Upvotes: 1
Views: 2371
Reputation: 38875
They hide Enabled
in the property window, but it does partially work. It wont disable the TabPage
but as a container control, it does disable all the child controls. The "trick" then becomes how to convey to the user that this or that tab is available: for that, use the image properties:
TabControl1.TabPages(1).Enabled = False
TabControl1.TabPages(1).ImageIndex = 1
Result:
You can embellish to make it clear, for instance a label with "Step 1 must be completed first". You can still intervene to stop the tab change with the SelectedIndexChanged
event but since they cannot interact with any control, there is no real need.
You can also use the Image part with the SelectedIndexChanged
event trap, as a means to tell them it is not available.
There is yet another way but the other alteratives are simpler. This can work ok for a Wizard scenario with a "Next >>" type button
Example:
Select Case TabControl1.TabPages.Count
Case 1
TabControl1.TabPages.Add(Pgs(0))
Case 2
TabControl1.TabPages.Add(Pgs(1))
...
End Select
If there is a "New Foo" button to wizard thru the steps for a new Foo, just remove pages 1-N again. I am not fond of controls coming and going visibility wise, but it can useful when Step Two
can vary depending on a value in Step 1 (ie either of TabPage 2, 3 or 4 can be used for Step 2 depending...).
Upvotes: 1
Reputation: 1552
With the help of @Hans Passant I did this to resolve this problem....
Private Sub TabControl1_Selecting(sender As Object, e As TabControlCancelEventArgs) Handles TabControl1.Selecting
e.cancel=True
End Sub
In my case this works perfectly........
Upvotes: 2