Trang 1 trên 1

Nâng cấp MaskedTextBox

Đã gửi: T.Sáu 05/03/2010 12:53 pm
gửi bởi tungcan5diop
Thủ thuật: Nâng cấp MaskedTextBox
Tác giả: ngaydautiendihoc+PhamTienSinh
Mô tả:


  1. Public Class Form1
  2.  
  3.     ' FALSE -->DOWN
  4.     Private Sub RollDate(ByVal TxtM As MaskedTextBox, ByVal IsUp As Boolean)
  5.         Dim CurrentPos% = TxtM.SelectionStart
  6.         Dim _Text$ = TxtM.Text.Replace("_", "0")
  7.         Dim Mon%, Year%, Day%, MaxDayinMonth%
  8.         Dim ValueAdded% = -1
  9.         If IsUp Then ValueAdded = 1
  10.         With TxtM
  11.             Day = _Text.Substring(0, 2)
  12.             Mon = _Text.Substring(3, 2)
  13.             Year = _Text.Substring(6, 4)
  14.             If Day = 0 Then Day = 1
  15.             If Mon = 0 Then Mon = 1
  16.             If Year = 0 Then Year = 1990
  17.             MaxDayinMonth = Date.DaysInMonth(Year, Mon)
  18.             Select Case CurrentPos
  19.                 Case 0 To 2
  20.                     Day += ValueAdded
  21.                     If Day > MaxDayinMonth Then Day = 1
  22.                     If Day < 1 Then Day = MaxDayinMonth
  23.                 Case 3 To 4
  24.                     Mon += ValueAdded
  25.                     If Mon > 12 Then Mon = 1
  26.                     If Mon < 1 Then Mon = 12
  27.                 Case Else
  28.                     Year += ValueAdded
  29.             End Select
  30.             Dim result$ = String.Format("{0}\{1}\{2}", Day.ToString("00"), Mon.ToString("00"), Year)
  31.             TxtM.Text = result
  32.             TxtM.SelectionStart = CurrentPos
  33.         End With
  34.     End Sub
  35.  
  36.  
  37.     Private Sub TxtCVNgayThang_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TxtCVNgayThang.KeyDown
  38.         Select Case e.KeyCode
  39.             Case Keys.Up
  40.                 RollDate(TxtCVNgayThang, True)
  41.                 e.SuppressKeyPress = True
  42.             Case Keys.Down
  43.                 RollDate(TxtCVNgayThang, False)
  44.                 e.SuppressKeyPress = True
  45.         End Select
  46.     End Sub
  47.  
  48.    
  49.  
  50.     Private Sub TxtCVNgayThang_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TxtCVNgayThang.MouseWheel
  51.         RollDate(TxtCVNgayThang, (e.Delta > 0))
  52.     End Sub
  53.  
  54.     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  55.         TxtCVNgayThang.TextMaskFormat = MaskFormat.IncludePromptAndLiterals
  56.     End Sub
  57. End Class
  58.  

Re: Nâng cấp MaskedTextBox

Đã gửi: T.Ba 16/03/2010 4:16 pm
gửi bởi nguyen_kia
Ban nang cap the nao:
Có thể tạo ô nhập dữ liệu ngày tháng có kiểm tra đc không?
Ví dụ, ngày thì ko quá 31, tháng ko quá 12, năm thì tùy thuộc kiểu nhập.
Nếu chi tiết hơn, kiểm tra luôn nó có hợp lệ ngày tháng năm ko (ví dụ tháng 2 thi ko thể có 29 ngày!!!")
Ta thử bàn luận nha.