1

次の手順があります。

    Private Sub btnRptEmployeePayToMarket_MouseDown(ByValsender As Object, ByVal myButton As System.Windows.Forms.MouseEventArgs) Handles btnRptEmployeePayToMarket.MouseDown

    Static Toggle As Boolean

    If myButton.Button = MouseButtons.Right Then

        If Toggle Then

            descForm.Hide()

        Else

            descForm.lblReportTitle.Text = "Ranges to Market"
            descForm.txtButtonDescription.Text = "Learn how you are currently paying specific departments or jobs compared to market. "
            descForm.Show()

        End If

    End If
    Toggle = Not Toggle

End Sub

同じアクションを実行する約 9 つのボタンがありますが、descForm.lblReportTitle と descForm.txtButtonDescription のテキストを変更するだけなので、どうすればこれを達成できますか?

サブを関数に変えることを考えましたが、それを達成する方法がわかりません。

4

2 に答える 2

1

このサブにハンドラーを追加できます。

Private Sub btnRptEmployeePayToMarket_MouseDown(ByValsender As Object, ByVal myButton As System.Windows.Forms.MouseEventArgs) Handles btnRptEmployeePayToMarket.MouseDown, btnAnotherone.MouseDown, etc...
于 2013-07-27T20:54:38.193 に答える
1

最初に、特定のボタンがいつ切り替えられたかどうかがわかるように、Toggle フラグから離れる必要があります。

これを行うために、ボタンの名前でキー付けされた Boolean オブジェクトの Dictionary を保持します。共通メソッドが実行されると、フラグがまだ存在しない場合は追加され、それを使用して適切な動作が決定されてから、切り替えられます。

このロジックを使用してコードを書き直すと、次のようになります。

Private m_cToggleFlags As New System.Collections.Generic.Dictionary(Of String, Boolean)

Private Sub btnRptEmployeePayToMarket_MouseDown(ByVal sender As Object, ByVal myButton As System.Windows.Forms.MouseEventArgs) Handles btnRptEmployeePayToMarket.MouseDown

    ToggleButton(DirectCast(sender, Control).Name, "Ranges to Market", "Learn how you are currently paying specific departments or jobs compared to market.")
End Sub

Private Sub ToggleButton(sButtonName As String, sReportTitle As String, sButtonDescription As String)

    If Not m_cToggleFlags.ContainsKey(sButtonName) Then
        m_cToggleFlags.Add(sButtonName, False)
    End If

    If m_cToggleFlags(sButtonName) 
        descForm.Hide()
    Else
        descForm.lblReportTitle.Text = sReportTitle
        descForm.txtButtonDescription.Text = sButtonDescription
        descForm.Show()
    End If

    m_cToggleFlags(sButtonName) = Not m_cToggleFlags(sButtonName)
End Sub
于 2013-07-27T20:59:21.910 に答える