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