如何使datetimepicker显示的内容为空白的?

解决方案 »

  1.   

    可以自定义一个组件,在前面贴一个TextBox.
      

  2.   

    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