0

従業員が情報と時間を入力すると、給与データを計算するプログラムを作成しました。ある形式の変数から別の形式の変数へのデータの読み取りに問題があります。私がやろうとしていたのは、Payroll_Submissionという別のフォームのTimeSheetというフォームから読み取ることでした。これが私がこれまでに持っているコードであり、計算を行うために他のフォームからそのデータを取得する必要があります。タイムシートコードが必要な場合はお知らせください。長いので今回は添付しませんでした。

Public Class Payroll_Submission

Private Sub Payroll_Submission_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

    Dim counter As Integer
    counter = 0

    lblEmployee.Text = TimeSheet.EmpName
    lblSuperName.Text = TimeSheet.Supervisor
    lblReport.Text = TimeSheet.Period

    If Not TimeSheet.flag Then
        lblHoursWorked.Text = TimeSheet.txtMon1 + TimeSheet.txtTues1 + TimeSheet.txtWed1 + TimeSheet.txtThurs1 + TimeSheet.txtFri1 + TimeSheet.txtSat1 + TimeSheet.txtSun1
        If lblOvertimeHours.Text > 40 Then
            lblRegHours.Text = 40
            lblRegHours.Text = lblHoursWorked.Text - 40
        Else
            lblRegHours.Text = lblHoursWorked.Text
            lblOvertimeHours.Text = 0
        End If
        lblOvertimeHours.Text = "$15"
        lblRateOver.Text = "$22.50"

        HourlyPay.Text = Convert.ToInt32(lblRegHours.Text) * 15
        lblOvertimeHours.Text = Convert.ToInt32(lblOvertimeHours.Text) * 22.5
        lblGrossPay.Text = Convert.ToInt32(HourlyPay.Text) + Convert.ToInt32(lblOvertimeHours.Text)

        If TimeSheet.chk1.Checked Then
            counter = counter + 1
        End If

        If TimeSheet.chk2.Checked Then
            counter = counter + 1
        End If

        If TimeSheet.chk3.Checked Then
            counter = counter + 1
        End If

        If TimeSheet.chk4.Checked Then
            counter = counter + 1
        End If

        If TimeSheet.chk5.Checked Then
            counter = counter + 1
        End If

        If TimeSheet.chk6.Checked Then
            counter = counter + 1
        End If

        If TimeSheet.chk7.Checked Then
            counter = counter + 1
        End If

        lblPTOHours.Text = counter

    End If

    HourlyPay.Text = Convert.ToInt32(lblRegHours.Text) * 15
    lblOvertimeHours.Text = Convert.ToInt32(lblOvertimeHours.Text) * 22.5
    lblGrossPay.Text = Convert.ToInt32(lblRegHours.Text) + Convert.ToInt32(lblOvertimeHours.Text)
End Sub

エンドクラス

4

3 に答える 3

0

Payroll_Submissionフォームからフォームを作成すると仮定すると、Timesheetフォームに2番目のコンストラクターを追加することを検討しますPayroll_Submission

Private _ts As Form

Public Sub New(ts As Form)
    Me.New()
    _ts = ts
End Sub

フォームを作成するときに、コンストラクターを介してフォームへの参照を渡します

    Dim ps As New Payroll_Submission(Me)

次に、参照をTimeSheetに変更すると_ts、コードは正常に機能するはずです。

コードを見るだけで、これを実行して、次の計算のためにコードを少し縮小することもできますcounter

Dim cbs As New List(Of CheckBox) From _
{ _
    _ts.chk1, _ts.chk2, _ts.chk3, _
    _ts.chk4, _ts.chk5, _ts.chk6, _
    _ts.chk7 _
}
Dim counter = cbs.Where(Function (cb) cb.Checked).Count()
于 2012-10-09T01:54:48.857 に答える
0

Timesheet フォームで変数を Friend として宣言します。例えば

Public Class Timesheet
  Friend EmpName As String
  Friend Supervisor As String
于 2012-10-09T04:16:42.660 に答える