|  | 
 
|  หลักการคิด: คำนวณหาจำนวนวันที่เลือกจากวันที่เริ่มต้นและวันที่สิ้นสุด จากนั้นทำการลูปตามจำนวนช่วงวันที่เลือก ทำการแยกแยะตาม DayOfWeek ออกมา โดยที่วันอาทิตย์ (Sunday) มีค่าเป็น 0 ส่วนวันเสาร์มีค่าเป็น 6 (สำหรับ Visual Basic.NET) ...
 มาดูโค้ดกันเถอะ ...
 
 คัดลอกไปที่คลิปบอร์ดPublic Class frmCountHoliday
    ' / -----------------------------------------------------------------------------
    '// Check Holiday
    Private Sub btnCalHoliday_Click(sender As System.Object, e As System.EventArgs) Handles btnCalHoliday.Click
        Dim CountSun As Integer = 0
        Dim CountSat As Integer = 0
        Dim StartDate As DateTime = Convert.ToDateTime(dtpStartDate.Text)
        Dim EndDate As DateTime = Convert.ToDateTime(dtpEndDate.Text)
        '// Find the number of days to loop.
        Dim TotalDays = (EndDate - StartDate).TotalDays
        'MsgBox(TotalDays)
        Call SetupDataGrid()
        For i = 0 To TotalDays
            '// https://docs.microsoft.com/en-us/dotnet/api/microsoft.visualbasic.dateandtime.weekday?view=netframework-4.8
            '// Check that the DayOfWeek value.
            Dim weekday As DayOfWeek = Convert.ToDateTime(dtpStartDate.Text).AddDays(i).DayOfWeek
            Dim MyFormatDate As String = "dd/MM/yyyy"
            '// FirstDayOfWeek.Saturday = 6
            If weekday = DayOfWeek.Saturday Then
                If chkSaturday.Checked Then
                    CountSat += 1
                    Dim row As String() = {Convert.ToDateTime(dtpStartDate.Text).AddDays(i).ToString(MyFormatDate), DayOfWeek.Saturday.ToString, DayOfWeek.Saturday}
                    dgvData.Rows.Add(row)
                End If
            End If
            '// FirstDayOfWeek.Sunday = 0 (Default)
            If weekday = DayOfWeek.Sunday Then
                If chkSunday.Checked Then
                    CountSun += 1
                    Dim row As String() = {Convert.ToDateTime(dtpStartDate.Text).AddDays(i).ToString(MyFormatDate), DayOfWeek.Sunday.ToString, DayOfWeek.Sunday}
                    dgvData.Rows.Add(row)
                End If
            End If
        Next
        lblSaturday.Text = CountSat & " [Days]"
        lblSunday.Text = CountSun & " [Days]"
    End Sub
    Private Sub frmCountHoliday_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        lblSaturday.Text = ""
        lblSunday.Text = ""
    End Sub
    ' / -----------------------------------------------------------------------------
    '// Initialize DataGridView @Run Time
    Private Sub SetupDataGrid()
        With dgvData
            .Columns.Clear()
            .Rows.Clear()
            .RowHeadersVisible = False
            .AllowUserToAddRows = False
            .AllowUserToDeleteRows = False
            .AllowUserToResizeRows = False
            .MultiSelect = False
            .SelectionMode = DataGridViewSelectionMode.FullRowSelect
            .ReadOnly = True
            .Font = New Font("Tahoma", 9)
            ' Autosize Column
            .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
            .AutoResizeColumns()
            '// Even-Odd Color
            .AlternatingRowsDefaultCellStyle.BackColor = Color.Orange
            ' Adjust Header Styles
            With .ColumnHeadersDefaultCellStyle
                .BackColor = Color.Navy
                .ForeColor = Color.Black ' Color.White
                .Font = New Font("Tahoma", 9, FontStyle.Bold)
            End With
        End With
        '// Declare columns type.
        Dim Column1 As New DataGridViewTextBoxColumn()
        Dim Column2 As New DataGridViewTextBoxColumn()
        Dim Column3 As New DataGridViewTextBoxColumn()
        '// Add new Columns
        dgvData.Columns.AddRange(New DataGridViewColumn() { _
                Column1, Column2, Column3 _
                })
        With dgvData
            .Columns(0).Name = "Date"
            .Columns(1).Name = "Day"
            .Columns(2).Name = "Day of Week"
        End With
    End Sub
End Class
ดาวน์โหลดโค้ดต้นฉบับ VB.NET (2010) ได้ที่นี่ ...
 
 
 | 
 
xขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึงคุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน  |