インフラジスティックス・ジャパン株式会社のBlog

インフラジスティックス・ジャパン株式会社のチームメンバーが技術トレンド、製品Tips、サポート情報からライセンス、日々の業務から感じることなど、さまざまなトピックについてお伝えするBlogです。

【WindowsForms】新元号と元号(和暦)コントロールの対応について

f:id:furugen098:20190327135014p:plain

こんにちは、デベロッパーサポートの古堅です。

前回 【WPF】新元号と元号(和暦)コントロールの対応について - インフラジスティックス・ジャパン株式会社のBlogはWPFでの対応の記事でしたが、当記事ではWindowsFormsの元号対応について紹介です!

WindowsForms製品も、Windowsアップデートのみで対応出来るのか?

結論から言いますと、WindowsForms製品もWindowsアップデートのみで対応できます!
元号情報はOSのレジストリから取得しているので、「弊社製品のサービスリリース」の適用は不要です。

対応方法

カルチャー情報(CultureInfo)に、日本語設定を行うことにより動作します。弊社の参考ページはこちら。
2017 Volume 1 の新機能 - Infragistics Windows Forms™ ヘルプ

デフォルトでは、カルチャはマシンのカルチャに設定されます。したがって、 WinDateTimeEditor および WinMaskedEdit は、カルチャの設定に従ってそのまま動作します。コントロールのカルチャは、WinMaskedEdit の CultureInfo プロパティ、または WinDateTimeEditor の FormatProvider プロパティで手動で指定することもできます。


サンプルコード

// 日本語の言語情報を設定
CultureInfo ci = new CultureInfo("ja-JP");
ci.DateTimeFormat.Calendar = new JapaneseCalendar();

// フォーマットプロバイダーに設定
this.ultraDateTimeEditor1.FormatProvider = ci;

// 元号のフォーマット文字列は g または gg
//  ⇒ gのみだと1文字。例えば平成の場合は、平 のみとなる。平成 の2文字を表示したいのでggを指定
// (注)MaskInputの月表現は大文字(MM)
this.ultraDateTimeEditor1.MaskInput = "ggyy年mm月dd日";
// (注)FormatStringの月表現は大文字(MM)
this.ultraDateTimeEditor1.FormatString = "ggyy年MM月dd日";

動作確認

前回の記事同様に、新元号(2019/5/1開始)をレジストリに格納し動作させた結果がこちらとなります。
※レジストリを修正してお試しする場合は、前回の記事をご参照ください。
f:id:furugen098:20190327132152g:plain

まとめ

弊社のデスクトップ製品であるWindowsFormsの元号対応についてのご紹介でした。実際の動作確認は、元号発表以降のWindowsアップデートをお待ちくださいませ。