2017-09-13 11 views
-1

私はコミュニティからの助けを本当に感謝しています。私はプログラマーのブロックに苦しんでおり、多くの点で問題を解決しようとしています。TabControl内のすべてのボタンを無効にする方法

私ははるかに大きいプロジェクトのデモ(モックアップ)を作成し、一時的にそれをここに保存されています Demo of the issue

を何が起こっている: 4スルー私はExeggcuteボタンを押した場合、ボタン1が(TabPage1でおよびTabPage2)は無効になり、TabPageも無効になります。どうするか

私はExeggcuteボタンを押した場合は、(TabPage1TabPage2で)4スルーボタン1が大文字に変更する必要があります。ただし、この変更はボタンにのみ影響し、タブページのタイトルには影響しません。ボタンは概念の証明のように無効になっています。目標は実際にテキストをすべて大文字にすることです。

これは私が使用していますコードです:

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 
+1

は 'TabControlのThen'です - あなたはボタンをいじるしたい場合は、これはあなたのコードは' Button's –

+2

反復のボタンに影響を与えることはできません。もし 'TypeOf ...'コード – Plutonix

+0

が 'ctl.Controls'コレクションをループしていて、フォームの' Controls'コレクションではなく 'loop'がループしているはずです。 –

答えて

2

ビル、あなたはその後、各TabPageを通じて、各TabControlを通過した後、各Button経由する必要があります。

インデックスで何もしていない場合は、ForではなくFor Eachを使用できます。 TypeOf T Isではなく、Enumerable.OfType(Of TResult)(@plutonixで既に述べたように)を使用して、各ループのコントロール列挙をフィルタリングすることもできます。 TypeOf関数は、(j)をコントロールしている場合

' 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 
+0

@PatrickCool 'button.Enabled = False'を追加した編集を拒否しました - OPは" _ボタンがコンセプトの証明として無効にされています;目標は実際にテキストをすべてcaps._にすることです " – trashr0x

+0

これは正確に正しい。 @ trashr0x、手順を教えて、コードをコメントする時間をとっていただきありがとうございます。あまりにも親切。 – vicsar

+0

@vicsarうれしい私は助けることができます。 – trashr0x

関連する問題