Hi, Here I discuss about DateTime in VB.Net
We all use DateTimePicker in VB Form for Date field.
But I use DateTextBox in VB Form for Date field with watermark and Validation.
Here not use DateTimePicker, simply create a class and use this.
Try this code:
We all use DateTimePicker in VB Form for Date field.
But I use DateTextBox in VB Form for Date field with watermark and Validation.
Here not use DateTimePicker, simply create a class and use this.
Try this code:
Imports System
Imports System.Drawing
Imports System.Windows.Forms
Public Class
DateTextBox
Inherits
TextBox
Public Sub New()
MyBase.New()
SetStyle(ControlStyles.AllPaintingInWmPaint Or
ControlStyles.OptimizedDoubleBuffer, True)
UpdateStyles()
AddHandler
TextChanged, AddressOf TextChange
AddHandler FontChanged, AddressOf
FontChange
AddHandler
KeyPress, AddressOf KeyPressed
AddHandler
Validated, AddressOf Validate
CreateContainer()
End Sub
Dim
WatermarkString0 As String
= "DD/MM/YYYY"
Dim
WatermarkFont0 As Font = New Font(Me.Font,
FontStyle.Regular)
Dim
WatermarkColor0 As Color = Color.Gray
Dim
WatermarkMaxLength As Integer
Dim
WatermarkContainer As Panel
Private Sub CreateContainer()
WatermarkContainer = New Panel
WatermarkContainer.Width = Me.Width - 4
WatermarkContainer.Height = Me.Height
WatermarkContainer.Location = New Point(2, 0)
WatermarkContainer.Anchor =
AnchorStyles.Left + AnchorStyles.Right
AddHandler
WatermarkContainer.Paint, AddressOf
WatermarkPaint
AddHandler
WatermarkContainer.Click, AddressOf
WatermarkClick
Me.Controls.Add(WatermarkContainer)
End Sub
Private Sub RemoveContainer()
Me.Controls.Remove(WatermarkContainer)
End Sub
Private Sub WatermarkClick(sender As
Object, e As
EventArgs)
Me.Focus()
End Sub
Private Sub WatermarkPaint(sender As
Object, e As
PaintEventArgs)
Dim g As Graphics = e.Graphics
g.DrawString(WatermarkString0,
WatermarkFont0, New
SolidBrush(WatermarkColor0), New PointF(-2.0!,
1.0!))
End Sub
Private Sub TextChange()
If
Text.Length = 0 Then
CreateContainer()
Else
RemoveContainer()
End If
End Sub
Private Sub FontChange()
WatermarkFont0 = New Font(Me.Font,
FontStyle.Regular)
End Sub
Private Sub KeyPressed(sender As
Object, e As
System.Windows.Forms.KeyPressEventArgs)
If (e.KeyChar < Chr(47) Or
e.KeyChar > Chr(57)) And (e.KeyChar <>
Chr(8)) And (e.KeyChar <> Chr(127)) Then
e.Handled = True
MsgBox("Enter
correct Date format DD/MM/YYYY", MsgBoxStyle.Critical, "ERROR!")
End If
End Sub
Private Sub Validate(sender As
Object, e As
System.EventArgs)
Dim d As Date
If Text
<> "" Then
Try
d = Text
Text = d
Catch
ex As Exception
MsgBox("Enter
correct Date format DD/MM/YYYY", MsgBoxStyle.Critical, "ERROR!")
Me.Select()
End
Try
End If
End Sub
Protected Overrides Sub
OnInvalidated(e As
System.Windows.Forms.InvalidateEventArgs)
MyBase.OnInvalidated(e)
WatermarkContainer.Invalidate()
End Sub
Public Property WatermarkText As
String
Get
Return
WatermarkString0
End Get
Set(value
As String)
WatermarkString0 = value
Me.Invalidate()
End Set
End Property
Public Property WatermarkColor As
Color
Get
Return
WatermarkColor0
End Get
Set(value
As Color)
WatermarkColor0 = value
Me.Invalidate()
End Set
End Property
End Class
If there is any other better option,
Thank You,
Arka Gupta.
No comments:
Post a Comment