Imports System.ComponentModelPublic Class DatePicker Inherits System.Windows.Forms.UserControl#Region " Windows フォーム デザイナで生成されたコード " Public Sub New() MyBase.New() ' この呼び出しは Windows フォーム デザイナで必要です。 InitializeComponent() ' InitializeComponent() 呼び出しの後に初期化を追加します。 End Sub 'UserControl はコンポーネント一覧を消去するために dispose をオーバーライドします。 Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub ' Windows フォーム デザイナで必要です。 Private components As System.ComponentModel.IContainer ' メモ : 以下のプロシージャは、Windows フォーム デザイナで必要です。 'Windows フォーム デザイナを使って変更してください。 ' コード エディタを使って変更しないでください。 Friend WithEvents dataTimerPicker As System.Windows.Forms.DateTimePicker Friend WithEvents txtDisplayDate As System.Windows.Forms.TextBox <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() Me.dataTimerPicker = New System.Windows.Forms.DateTimePicker Me.txtDisplayDate = New System.Windows.Forms.TextBox Me.SuspendLayout() ' 'dataTimerPicker ' Me.dataTimerPicker.CustomFormat = "yyyy/MM/dd" Me.dataTimerPicker.Format = System.Windows.Forms.DateTimePickerFormat.Custom Me.dataTimerPicker.Location = New System.Drawing.Point(0, 0) Me.dataTimerPicker.Name = "dataTimerPicker" Me.dataTimerPicker.Size = New System.Drawing.Size(160, 23) Me.dataTimerPicker.TabIndex = 1 Me.dataTimerPicker.TabStop = False ' 'txtDisplayDate ' Me.txtDisplayDate.BackColor = System.Drawing.Color.White Me.txtDisplayDate.BorderStyle = System.Windows.Forms.BorderStyle.None Me.txtDisplayDate.ImeMode = System.Windows.Forms.ImeMode.NoControl Me.txtDisplayDate.Location = New System.Drawing.Point(4, 4) Me.txtDisplayDate.MaxLength = 0 Me.txtDisplayDate.Name = "txtDisplayDate" Me.txtDisplayDate.ReadOnly = True Me.txtDisplayDate.Size = New System.Drawing.Size(135, 16) Me.txtDisplayDate.TabIndex = 0 Me.txtDisplayDate.Text = "" ' 'DatePicker ' Me.Controls.Add(Me.txtDisplayDate) Me.Controls.Add(Me.dataTimerPicker) Me.Font = New System.Drawing.Font("MS ゴシック", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(128, Byte)) Me.Name = "DatePicker" Me.Size = New System.Drawing.Size(160, 24) Me.ResumeLayout(False) End Sub#End Region Private Sub dataTimerPicker_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dataTimerPicker.ValueChanged Me.txtDisplayDate.Text = Me.dataTimerPicker.Value.ToString("yyyy/MM/dd") RaiseEvent DateValueChanged(Me, e) End Sub Private Sub dataTimerPicker_CloseUp(ByVal sender As Object, ByVal e As System.EventArgs) Handles dataTimerPicker.CloseUp If Me.txtDisplayDate.Text.Length = 0 Then Me.txtDisplayDate.Text = Me.dataTimerPicker.Value.ToString("yyyy/MM/dd") RaiseEvent DateValueChanged(Me, e) End If End Sub Private Sub txtDisplayDate_KeyDown(ByVal send As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtDisplayDate.KeyDown If e.KeyCode = Keys.Delete Or e.KeyCode = Keys.Back Then txtDisplayDate.Clear() End If End Sub <Description("The value of the date.")> _ Public Property DateValue() As String Get Return Me.txtDisplayDate.Text End Get Set(ByVal Value As String) Me.txtDisplayDate.Text = Value Try Me.dataTimerPicker.Value = Convert.ToDateTime(Value) Catch ex As Exception Me.txtDisplayDate.Text = "" End Try End Set End Property Private Sub datePicker_Resize(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Resize RedrawControls() End Sub Protected Overrides Sub OnFontChanged(ByVal e As System.EventArgs) MyBase.OnFontChanged(e) RedrawControls() End Sub Private Sub RedrawControls() Dim fixedWidth As Integer = Me.ClientRectangle.Width Dim fixedHeight As Integer = Me.dataTimerPicker.Height If Me.ClientRectangle.Height <> fixedHeight Then Me.SetClientSizeCore(Me.ClientRectangle.Width, fixedHeight) Exit Sub End If Dim txtWidth As Integer = fixedWidth - 23 If txtWidth < 0 Then txtWidth = 0 ' Modify the size of controls txtDisplayDate.SetBounds(4, 4, txtWidth, fixedHeight) Me.dataTimerPicker.SetBounds(0, 0, fixedWidth, fixedHeight) End Sub Event DateValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)End Class
Inherits System.Windows.Forms.UserControl#Region " Windows フォーム デザイナで生成されたコード " Public Sub New()
MyBase.New() ' この呼び出しは Windows フォーム デザイナで必要です。
InitializeComponent()
' InitializeComponent() 呼び出しの後に初期化を追加します。 End Sub 'UserControl はコンポーネント一覧を消去するために dispose をオーバーライドします。
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub ' Windows フォーム デザイナで必要です。
Private components As System.ComponentModel.IContainer ' メモ : 以下のプロシージャは、Windows フォーム デザイナで必要です。
'Windows フォーム デザイナを使って変更してください。
' コード エディタを使って変更しないでください。
Friend WithEvents dataTimerPicker As System.Windows.Forms.DateTimePicker
Friend WithEvents txtDisplayDate As System.Windows.Forms.TextBox
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.dataTimerPicker = New System.Windows.Forms.DateTimePicker
Me.txtDisplayDate = New System.Windows.Forms.TextBox
Me.SuspendLayout()
'
'dataTimerPicker
'
Me.dataTimerPicker.CustomFormat = "yyyy/MM/dd"
Me.dataTimerPicker.Format = System.Windows.Forms.DateTimePickerFormat.Custom
Me.dataTimerPicker.Location = New System.Drawing.Point(0, 0)
Me.dataTimerPicker.Name = "dataTimerPicker"
Me.dataTimerPicker.Size = New System.Drawing.Size(160, 23)
Me.dataTimerPicker.TabIndex = 1
Me.dataTimerPicker.TabStop = False
'
'txtDisplayDate
'
Me.txtDisplayDate.BackColor = System.Drawing.Color.White
Me.txtDisplayDate.BorderStyle = System.Windows.Forms.BorderStyle.None
Me.txtDisplayDate.ImeMode = System.Windows.Forms.ImeMode.NoControl
Me.txtDisplayDate.Location = New System.Drawing.Point(4, 4)
Me.txtDisplayDate.MaxLength = 0
Me.txtDisplayDate.Name = "txtDisplayDate"
Me.txtDisplayDate.ReadOnly = True
Me.txtDisplayDate.Size = New System.Drawing.Size(135, 16)
Me.txtDisplayDate.TabIndex = 0
Me.txtDisplayDate.Text = ""
'
'DatePicker
'
Me.Controls.Add(Me.txtDisplayDate)
Me.Controls.Add(Me.dataTimerPicker)
Me.Font = New System.Drawing.Font("MS ゴシック", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(128, Byte))
Me.Name = "DatePicker"
Me.Size = New System.Drawing.Size(160, 24)
Me.ResumeLayout(False) End Sub#End Region Private Sub dataTimerPicker_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dataTimerPicker.ValueChanged
Me.txtDisplayDate.Text = Me.dataTimerPicker.Value.ToString("yyyy/MM/dd")
RaiseEvent DateValueChanged(Me, e)
End Sub Private Sub dataTimerPicker_CloseUp(ByVal sender As Object, ByVal e As System.EventArgs) Handles dataTimerPicker.CloseUp
If Me.txtDisplayDate.Text.Length = 0 Then
Me.txtDisplayDate.Text = Me.dataTimerPicker.Value.ToString("yyyy/MM/dd")
RaiseEvent DateValueChanged(Me, e)
End If
End Sub Private Sub txtDisplayDate_KeyDown(ByVal send As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtDisplayDate.KeyDown
If e.KeyCode = Keys.Delete Or e.KeyCode = Keys.Back Then
txtDisplayDate.Clear()
End If
End Sub <Description("The value of the date.")> _
Public Property DateValue() As String
Get
Return Me.txtDisplayDate.Text
End Get
Set(ByVal Value As String)
Me.txtDisplayDate.Text = Value
Try
Me.dataTimerPicker.Value = Convert.ToDateTime(Value)
Catch ex As Exception
Me.txtDisplayDate.Text = ""
End Try
End Set
End Property Private Sub datePicker_Resize(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Resize
RedrawControls()
End Sub Protected Overrides Sub OnFontChanged(ByVal e As System.EventArgs)
MyBase.OnFontChanged(e)
RedrawControls()
End Sub Private Sub RedrawControls()
Dim fixedWidth As Integer = Me.ClientRectangle.Width
Dim fixedHeight As Integer = Me.dataTimerPicker.Height
If Me.ClientRectangle.Height <> fixedHeight Then
Me.SetClientSizeCore(Me.ClientRectangle.Width, fixedHeight)
Exit Sub
End If
Dim txtWidth As Integer = fixedWidth - 23
If txtWidth < 0 Then txtWidth = 0
' Modify the size of controls
txtDisplayDate.SetBounds(4, 4, txtWidth, fixedHeight)
Me.dataTimerPicker.SetBounds(0, 0, fixedWidth, fixedHeight)
End Sub Event DateValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)End Class