• 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

Điều hành viên: tungcan5diop, QUANITGROBEST

Hình đại diện của người dùng
tungcan5diop
Cựu chiến binh
Cựu chiến binh
Bài viết: 1123
Ngày tham gia: T.Tư 24/09/2008 4:04 pm
Đến từ: TPHCM
Has thanked: 1 time
Been thanked: 28 time

Nâng cấp MaskedTextBox

Gửi bàigửi bởi tungcan5diop » T.Sáu 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.  
Tập tin đính kèm
masktextbox.rar
(50.9 KiB) Đã tải 666 lần


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
Bài viết: 17
Ngày tham gia: T.Hai 15/03/2010 3:08 pm

Re: Nâng cấp MaskedTextBox

Gửi bàigửi bởi nguyen_kia » T.Ba 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.


Quay về “[.NET] Ứng dụng - Form và Control”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.2 khách