• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Nâng cấp MaskedTextBox

Các thủ thuật liên quan đến ứng dụng, biểu mẫu và control

Moderators: tungcan5diop, QUANITGROBEST

User avatar
tungcan5diop
Cựu chiến binh
Cựu chiến binh
Posts: 1123
Joined: Wed 24/09/2008 4:04 pm
Location: TPHCM
Has thanked: 1 time
Been thanked: 28 times

Nâng cấp MaskedTextBox

Postby tungcan5diop » Fri 05/03/2010 12:53 pm

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.  
Attachments
masktextbox.rar
(50.9 KiB) Downloaded 748 times


Hỡi thế gian bug(lỗi) là gì?
Mà sửa...hoài không hết!

nguyen_kia
Thành viên chính thức
Thành viên chính thức
Posts: 17
Joined: Mon 15/03/2010 3:08 pm

Re: Nâng cấp MaskedTextBox

Postby nguyen_kia » Tue 16/03/2010 4:16 pm

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.


Return to “[.NET] Ứng dụng - Form và Control”

Who is online

Users browsing this forum: No registered users and 1 guest