我的vb.net应用程序中有一个tabControl - 它有3个标签。点击第一个标签后,我试图做一些事情,以便用户无法退出该标签 - 这似乎比我预期的要困难得多。我只是试图禁用TAB本身 - 这样他们就无法离开当前标签 - TABPAGE不必被禁用,因为它们不应该离开当前标签...
我正在尝试一些事情......
tabControl1.tabPage(1).enabled=false
和
tabcontrol1.tabpage1.enabled=false
甚至试图隐藏它
tabcontrol1.tabpage(1).visible=false
似乎没有任何工作.........!
我甚至尝试过
tabPage1.hide()
但是没有做任何事情
编辑:
我发现了这段代码 - 我是否必须对此进行操作以禁用实际的TAB - 非TAB页面 - 我不希望用户在点击特定内容时离开他们已经选中的标签按钮...
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 :(得分:1)
在@Hans Passant的帮助下,我这样做是为了解决这个问题......
Private Sub TabControl1_Selecting(sender As Object, e As TabControlCancelEventArgs) Handles TabControl1.Selecting
e.cancel=True
End Sub
在我的情况下,这完美地运作........
答案 1 :(得分:1)
他们在属性窗口中隐藏Enabled
,但它确实有效。它不会禁用TabPage
但作为容器控件,它会禁用所有子控件。然后“技巧”变成如何向用户传达这个或那个标签是可用的:为此,使用图像属性:
TabControl1.TabPages(1).Enabled = False
TabControl1.TabPages(1).ImageIndex = 1
结果:
您可以修饰以明确说明,例如标签“第1步必须先完成”。您可以仍然干预以使用SelectedIndexChanged
事件停止标签更改,但由于它们无法与任何控件进行交互,因此无需实际需要。
您还可以将带有SelectedIndexChanged
事件陷阱的图像部分用作告诉它们不可用的方法。
还有另一种方法,但其他替代品更简单。对于具有“Next>>”的向导方案,这可以正常工作键入按钮
示例:
Select Case TabControl1.TabPages.Count
Case 1
TabControl1.TabPages.Add(Pgs(0))
Case 2
TabControl1.TabPages.Add(Pgs(1))
...
End Select
如果有一个“New Foo”按钮通过新Foo的步骤向导,只需再次删除1-N页。我并不喜欢明智的控制能力,但是当Step Two
根据步骤1中的值而变化时(即TabPage 2,3,或 4中的任何一个都可以)用于步骤2取决于...)。