|
หลักการคิด: คำนวณหาจำนวนวันที่เลือกจากวันที่เริ่มต้นและวันที่สิ้นสุด จากนั้นทำการลูปตามจำนวนช่วงวันที่เลือก ทำการแยกแยะตาม 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
|