Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Form2.ShowDialog()
End Sub
End Class
Public Class Form2
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim ctl As New System.Windows.Forms.DateTimePicker
With ctl
.Text = "" ‘ 註解掉此行則顯示正常
.Format = System.Windows.Forms.DateTimePickerFormat.Custom
.CustomFormat = "yyyy/MM/dd HH:mm:ss"
End With
Me.Controls.Clear()
Me.Controls.Add(ctl)
ctl.Value = DateTime.Now.Date
Me.Text = ctl.Value & "-" & ctl.Text
End Sub
End Class
Public Class Form2
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim ctl As New System.Windows.Forms.DateTimePicker
With ctl
‘.Text = "" ‘ 註解掉此行則顯示正常
.Format = System.Windows.Forms.DateTimePickerFormat.Custom
.CustomFormat = "yyyy/MM/dd HH:mm:ss"
End With
Me.Controls.Clear()
Me.Controls.Add(ctl)
ctl.Value = DateTime.Now.Date
Me.Text = ctl.Value & "-" & ctl.Text
End Sub
End Class
Subject: 微軟回覆您的問題(SRT070913810389) – DateTimePicker 類別在設定 Value 屬性後 Text 屬性可能會不正常
鄭先生您好:
謝謝您的來電。敝姓*,我是台灣微軟技術支援工程師,很榮幸有機會為您服務。關於您遇到的問題,請參考以下報告。若步驟中有任何不清楚或需要進一步的協助,為避免我們因在電話中而耽誤接聽您電話的時間,建議您先以 EMAIL 方式回覆給我,我將在收到您的來信後儘速與您連絡,謝謝。
問題代號︰SRT070913810389
問題描述︰DateTimePicker 類別在設定 Value 屬性後 Text 屬性可能會不正常
解決方案︰
這是一個已知的問題,由於 DateTimePicker 控制項使用的是 Windows OS 所提供的 Date Time picker 控制項,因此有可能會是 OS 底層的問題,此問題與 OS 相關,並不全然是 DateTimePicker 本身的問題。
會發生這個狀況乃是因為在 Form_Load 中對 DateTimePicker 控制項進行初始化的動作時,DateTimePicker 控制項的 Handle 尚未建立,因此以下有幾種 workaround 供您參考:
1. 使用 Form.Dispose()
2. 將初始化的動作移至 Form_Load 外進行
3. 在使用 Text 屬性之前加入下列程式碼已取得控制像的 Handle (附檔為此方法的 sample)
Dim p As IntPtr
P = ctl.Handle
Public Class Form2
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim ctl As New System.Windows.Forms.DateTimePicker
Dim p As IntPtr
p = ctl.Handle
With ctl
.Text = "" ‘ 註解掉此行則正常
.Format = System.Windows.Forms.DateTimePickerFormat.Custom
.CustomFormat = "yyyy/MM/dd HH:mm:ss"
End With
Me.Controls.Clear()
Me.Controls.Add(ctl)
ctl.Value = DateTime.Now.Date
Me.Text = ctl.Value & "-" & ctl.Text
End Sub
End Class
請參考上述三種處理方式,再視您的需要決定採用何種方案。
請您參考上述資訊,若有任何不清楚或需要進一步協助,請儘速與我連絡,謝謝!
技術支援工程師 Support Engineer
Developer Support Team
Global Technical Support Center – Taiwan
技術支援服務首頁: http://support.microsoft.com
技術支援專線: 0800-008-833(市話專用)/ 02-2999-8833
Delighting our customers is our #1 priority. We welcome your comments and suggestions about how we can improve the service provided to you. Please feel free to email our management team at gtscfb@microsoft.com or contact my manager directly at cych@microsoft.com.
補充:
CSS 那邊有說,由於這是作業系統的問題,所以更新是由作業系統那邊來做,不確定何時會更新,也有可能直接在下版的 Shell Common Control 才做更新。若有更新會另外通知,我再轉貼。
讚讚
引用通告: [VB2005] ListView 初始化與 ItemChecked 事件 | 鄭子璉