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....
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)
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
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
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...).