Vb.net 如何禁用TabControl中的所有按钮
我真的很感谢社区的帮助,我正遭受程序员的阻碍,并试图以多种方式解决这个问题,但没有任何效果 我创建了一个更大项目的演示(模型),并将其临时存储在此处: 正在发生的事情: 如果我按下Vb.net 如何禁用TabControl中的所有按钮,vb.net,Vb.net,我真的很感谢社区的帮助,我正遭受程序员的阻碍,并试图以多种方式解决这个问题,但没有任何效果 我创建了一个更大项目的演示(模型),并将其临时存储在此处: 正在发生的事情: 如果我按下执行按钮,则按钮1到4(在选项卡页面1和选项卡页面2中)将被禁用,选项卡页面也将被禁用 应该发生什么: 如果我按下exegcute按钮,则按钮1到4(在TabPage1和TabPage2中)应更改为大写字母;但是,此更改只会影响按钮,而不会影响选项卡页面标题。按钮被禁用只是作为概念证明;目标是让他们的文本全部大写 这
执行
按钮,则按钮1到4(在选项卡页面1
和选项卡页面2
中)将被禁用,选项卡页面
也将被禁用
应该发生什么:
如果我按下exegcute
按钮,则按钮1到4(在TabPage1
和TabPage2
中)应更改为大写字母;但是,此更改只会影响按钮,而不会影响选项卡页面标题。按钮被禁用只是作为概念证明;目标是让他们的文本全部大写
这是我正在使用的代码:
ctl.Text=UCase(ctl.Text)
-这不起作用,为什么?我需要按钮以大写字母显示;但是,只有禁用它们的选项才起作用。为什么?
Public Class Form1
Private Sub BtnExeggcute_Click(sender As Object, e As EventArgs) Handles BtnExeggcute.Click
Dim ctl As Control
For i = 0 To Controls.Count - 1
ctl = Controls(i)
If TypeOf ctl Is TabControl Then
For j = 0 To Controls.Count - 1
If TypeOf Controls(j) Is TabControl Then
ctl.Text = UCase(ctl.Text) ' This does not work why? I need the buttons to be shown in uppercase; however, only disabling them works.
ctl.Enabled = False
End If
Next j
End If
Next i
End Sub
End Class
在现有方法的基础上,您需要遍历每个
选项卡控件
,然后遍历每个选项卡页面
,然后遍历每个按钮
如果未对索引执行任何操作,则可以对每个使用,而不是对
使用。您还可以使用而不是TypeOf T Is
(如@puropoix所述)过滤每个循环上的控件枚举
如果控件类型(j)为TabControl,则
——如果您想摆弄按钮,这不允许您的代码影响按钮
站点速率按钮。使用of type
也比使用If TypeOf…
code更容易。假设你的j
循环应该在ctl.Controls
集合上循环,而不是表单的Controls
集合。@PatrickCool我拒绝了你的编辑,因为它添加了按钮。Enabled=False
-OP明确指出“禁用按钮只是为了证明概念;我们的目标是让他们的文本完全大写。“这是完全正确的。@trashr0x,感谢您花时间一步一步地教授这个过程并对代码进行注释。太好了。@vicsar很高兴我能提供帮助。
' only controls which are TabControls
For Each tabControl As Control In Controls.OfType(Of TabControl)
' only controls in each TabControl which are TabPages
For Each tabPage As Control In tabControl.Controls.OfType(Of TabPage)
' only controls in each TabPage which are Buttons
For Each button As Control In tabPage.Controls.OfType(Of Button)
' reached a button! uppercase it's text
button.Text = button.Text.ToUpperInvariant
Next
Next
Next