Windows 10 Creators Update において、DateTimePicker コントロールの表示や入力が正しく機能しない場合がある


こんにちは、Platform SDK (Windows SDK) サポートチームです。
今回は、Windows 10 Creators Update において、DateTimePicker コントロールで確認されている問題についてご案内します。

 

現象

Windows 10 Creators Update において、DateTimePicker コントロールの年月日の入力および表示が正しく機能しない現象が確認されています。
具体的には以下 (A)、(B)、(C) いずれかの条件で DateTimePicker コントロールを使用した際に発生する場合があります。

(A)Win32 の場合、date and time picker controls
(B)MFC の場合、CDateTimeCtrl
(C)Windows フォーム アプリケーションの場合、DateTimePicker
 
それぞれのクラスについては以下 MSDN ドキュメントをご参照ください。

About Date and Time Picker Controls
< https://msdn.microsoft.com/en-us/library/windows/desktop/bb761726.aspx >

CDateTimeCtrl
< https://msdn.microsoft.com/ja-jp/library/57f46yyw.aspx >

DateTimePicker
< https://msdn.microsoft.com/ja-jp/library/system.windows.forms.datetimepicker.aspx >
 
現象の一例として、Windows 10 Creators Update とそれ以外の OS (Windows 10 Anniversary Update) で、MFC アプリケーションを実行した場合の、DateTimePicker コントロールの表示内容のスクリーンショットを掲載します。

・Windows 10 Anniversary Update の実行結果 (正常に表示されている状態)

正常に表示されている状態
 

・Windows 10 Creators Update の実行結果 (問題が発生している状態)

問題が発生している状態

 

原因

Windows 10 Creators Update に含まれる、DateTimePicker コントロールの不具合が原因です。

DateTimePicker コントロールは、コモンコントロールと呼ばれるコントロール群に含まれています。
コモンコントロールには、バージョン 5 とバージョン 6 が用意されていますが、バージョン 5 の DateTimePicker コントロールに不具合が確認されています。
なお、コモンコントロールのバージョン 5 は、アプリケーションのマニフェストなどで、Visual Style が無効にされている場合に使用されます。

マイクロソフトでは、この不具合について現在も調査中です。
詳細については、わかりしだいこの資料に掲載する予定です。

 

回避策

Visual Style を有効にして、コモンコントロールのバージョン 6 を使用することで、現象が回避されます。
具体的にはそれぞれのアプリケーションで以下の操作を実施し、Visual Style を有効にします。
 
[Win32、MFC などのアンマネージ アプリケーションの場合]
Visual Style を有効にするマニフェストをアプリケーションに追加します。
英語表記となりますが、マニフェストの内容および追加方法については以下 MSDN ドキュメントをご参考ください。

Enabling Visual Styles
< https://msdn.microsoft.com/en-us/library/windows/desktop/bb773175.aspx >
 
[Windows フォーム アプリケーションの場合]
・ Visual Basic プロジェクトの場合
プロジェクトのプロパティを開き、[アプリケーション]タブにある [XP Visual スタイルを有効にする] のチェックをオンにします。

・ C# プロジェクトの場合
Program.cs の Programクラスにある Mainメソッドで Application.EnableVisualStyles() を実行します。

なお、Visual Basic や C# の場合、Visual Studio の新規作成からプロジェクトを作成した場合、Visual Style は通常有効となっていますので本現象は発生しません。

Skip to main content