同様のツールストリップボタンの手順をVB.NETの単一のものに分解する方法

user8666372

私はToolStripを使用しており、ツールストリップボタンを使用してGUIを変更する方法のサンプルコードを使用してGUI構造を変更するためのボタンです。ToolStripButtonのクリックされたイベントが処理されたときに単一のプロシージャを呼び出すことができるなど、より簡単な方法でそれらを使用する方法はありますか?現在の場合、私は悪い方法でコーディングしているようです。

たとえば、ユーザーが[ホーム]ボタンをクリックすると、選択したボタンが強調表示され、他のパネル要素が非表示になり、ホームのパネルが表示されます。

 Private Sub tsbHome_Click(sender As Object, e As EventArgs) Handles tsbHome.Click
        tsbHome.Checked = True
        tsbTools.Checked = False
        tsbReport.Checked = False
        tsbAnalyze.Checked = False
'... Tool Strip Button lists continues...
        pnlHome.Visible = True
        pnlTools.Visible = False
        pnlReport.Visible = False
        pnlAnalyze.Visible = False
' ... Panel lists continues...
    End Sub

ユーザーが[ツール]ボタンをクリックすると、選択したボタンが強調表示され、他のパネル要素が非表示になり、ツールのパネルが表示されます。

 Private Sub tsbTools_Click(sender As Object, e As EventArgs) Handles tsbTools.Click
        tsbHome.Checked = False
        tsbTools.Checked = True
        tsbReport.Checked = False
        tsbAnalyze.Checked = False
'... Tool Strip Button lists continues...
        pnlHome.Visible = False
        pnlTools.Visible = True
        pnlReport.Visible = False
        pnlAnalyze.Visible = False
' ... Panel lists continues...
    End Sub
Joel Coehoorn

このコードをはるかに単純にするための2つのトリックがあります。1つ目Handlesは、イベントメソッド宣言の句に複数の項目を含めることができることを知っていることですその句を省略して、AddHandler1つのメソッドに多くのコントロールのイベントハンドラーを設定するために使用することもできます。)もう1つのトリックは、sender引数を使用して、このメソッドに接続されている複数のコントロールのどれが使用されたかを判断する方法を知ることです。

それらを組み合わせると、任意のビューに変更するために機能する1つの方法が得られます。

Private Sub NavigationMenuItem_Click(sender As Object, e As EventArgs) Handles tsbHome.Click, tsbTools.Click, tsbReport.Click, tsbAnalyzer.Click
    'First Suspend Layout, to avoid extra screen re-draws
     Me.SuspendLayout()

     'Set your checkboxes
     tsbHome.Checked = sender Is tsbHome
     tsbTools.Checked = sender Is tsbTools
     tsbReport.Checked = sender Is tsbReport
     tsbAnalyze.Checked = sender Is tsbAnalyze

     'Then De-select EVERYTHING
     pnlHome.Visible = sender Is tsbHome
     pnlTools.Visible = sender Is tsbTools
     pnlReport.Visible = sender Is tsbReport
     pnlAnalyze.Visible = sender Is tsbAnalyze
      ' ... lists continues...

    'Finally, resume layout so all changes draw to the screen at once
    Me.ResumeLayout()
End Sub

Form LoadまたはInitializeComponent()メソッドにコードを追加して、パネルとツールストリップボタンをリストに追加すると、これを簡単に行うことができます。

Private ViewButtons As List(Of ToolStripButton)
Private ViewPanels As List(Of Panel)

 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    ViewButtons = New List(Of ToolStripButton) From {tsbHome, tsbTools, tsbReport, tsbAnalyze}
    ViewPanels = New List(Of Panel) From {pnlHome, pnlTools, pnlReport, pnlAnalyze}

    For Each b In ViewButtons
       AddHandler b.Click, AddressOf NavigationMenuItem_Click
    Next

End Sub

Private Sub NavigationMenuItem_Click(sender As Object, e As EventArgs) 
     Me.SuspendLayout()

     For i As Integer = 0 To ViewButtons.Length - 1
         Dim selected As Boolean = ViewButtons(i) Is sender
         ViewButtons(i).Checked = selected
         ViewPanels(i).Visible = selected
    Next

    Me.ResumeLayout()
End Sub

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

広い範囲で変数をスケーリングし、ggplotの単一のプロットに同じものを表示する方法

分類Dev

Angularの単一のトグルボタンを使用して複数のツリーリストを開いたままにする方法

分類Dev

テキストのクリーニング手順を単一のPython関数に凝縮する方法は?

分類Dev

ツールストリップボタンの奇妙な動作

分類Dev

Hyperledgerファブリックノードセットアップ用のcryptogenツールをインストールする手順は?

分類Dev

vscode:リリースノートにあるものと同様のリッチコンテンツを作成しますか?

分類Dev

最初のボタンがカスタムセルからのもので、もう一方がストーリーボードからのものである場合に、2つのボタンに対して同じアクションを実行する1つのIBActionを作成する方法

分類Dev

単語のリストを分解する

分類Dev

vb.netの単一のラベルテキストに複数の配列を追加する方法

分類Dev

剣道UI:タブストリップのコンテンツは、ボタンをクリックすると同じタブストリップ内の別のビューにリダイレクトされる必要があります

分類Dev

JavaScript-onmousedownと同様のプレゼンターツールのイベントを検出しますか?

分類Dev

単語のリストに2文字のコンボのヒートマップを作成する方法

分類Dev

単一のものに複数のマップを集約するエレガントでパフォーマンスの高い方法

分類Dev

jqで分解した後に単一のオブジェクトを再構築する方法

分類Dev

SDL信号リストをSysMLで同様のものに変換する方法は?

分類Dev

特定の単語/フレーズの特定のデータをGoogleスプレッドシートの単一のセルにフェッチする方法

分類Dev

ハッシュマップ内の単一のキーの値のリストに値を追加する方法(Java)

分類Dev

リンクボタンの上部にツールチップを表示する

分類Dev

同様のモデルタイプの単一のアプリで複数のAPIを処理する

分類Dev

アプリストアのアップロード中にコンテンツを配布するボタン

分類Dev

リスト付きの単一の子スクロールビューの下部にあるボタンを修正する方法

分類Dev

パンダの列の値を一意の行に「分解」する方法

分類Dev

Node JS サーバー アプリケーションのスループットを向上させる手順

分類Dev

ボケ-HoverToolのツールチップをクリックのポイントに固定する方法は?

分類Dev

タプルのリスト内の同様の値の比較

分類Dev

テーブルの単一行から分解で取得する複数の画像を表示する方法

分類Dev

タプルのリストをシリーズに変換する最も簡単な方法

分類Dev

マウスオーバーでツールストリップボタンのハイライト色をカスタマイズする方法

分類Dev

オンロード時に単一のtextBoxにフォーカスを設定する最も簡単な方法

Related 関連記事

  1. 1

    広い範囲で変数をスケーリングし、ggplotの単一のプロットに同じものを表示する方法

  2. 2

    Angularの単一のトグルボタンを使用して複数のツリーリストを開いたままにする方法

  3. 3

    テキストのクリーニング手順を単一のPython関数に凝縮する方法は?

  4. 4

    ツールストリップボタンの奇妙な動作

  5. 5

    Hyperledgerファブリックノードセットアップ用のcryptogenツールをインストールする手順は?

  6. 6

    vscode:リリースノートにあるものと同様のリッチコンテンツを作成しますか?

  7. 7

    最初のボタンがカスタムセルからのもので、もう一方がストーリーボードからのものである場合に、2つのボタンに対して同じアクションを実行する1つのIBActionを作成する方法

  8. 8

    単語のリストを分解する

  9. 9

    vb.netの単一のラベルテキストに複数の配列を追加する方法

  10. 10

    剣道UI:タブストリップのコンテンツは、ボタンをクリックすると同じタブストリップ内の別のビューにリダイレクトされる必要があります

  11. 11

    JavaScript-onmousedownと同様のプレゼンターツールのイベントを検出しますか?

  12. 12

    単語のリストに2文字のコンボのヒートマップを作成する方法

  13. 13

    単一のものに複数のマップを集約するエレガントでパフォーマンスの高い方法

  14. 14

    jqで分解した後に単一のオブジェクトを再構築する方法

  15. 15

    SDL信号リストをSysMLで同様のものに変換する方法は?

  16. 16

    特定の単語/フレーズの特定のデータをGoogleスプレッドシートの単一のセルにフェッチする方法

  17. 17

    ハッシュマップ内の単一のキーの値のリストに値を追加する方法(Java)

  18. 18

    リンクボタンの上部にツールチップを表示する

  19. 19

    同様のモデルタイプの単一のアプリで複数のAPIを処理する

  20. 20

    アプリストアのアップロード中にコンテンツを配布するボタン

  21. 21

    リスト付きの単一の子スクロールビューの下部にあるボタンを修正する方法

  22. 22

    パンダの列の値を一意の行に「分解」する方法

  23. 23

    Node JS サーバー アプリケーションのスループットを向上させる手順

  24. 24

    ボケ-HoverToolのツールチップをクリックのポイントに固定する方法は?

  25. 25

    タプルのリスト内の同様の値の比較

  26. 26

    テーブルの単一行から分解で取得する複数の画像を表示する方法

  27. 27

    タプルのリストをシリーズに変換する最も簡単な方法

  28. 28

    マウスオーバーでツールストリップボタンのハイライト色をカスタマイズする方法

  29. 29

    オンロード時に単一のtextBoxにフォーカスを設定する最も簡単な方法

ホットタグ

アーカイブ