[.Net]DateTimePickerでエラー

久しぶりに、プログラミングネタです。
【VisualBasic .Net 2012】

2017-02-01-01.jpg


DateTimePickerを使っている時、以下の様なエラーになる場合があります。

Year、Month および Day パラメーターが表現できない DateTime を示しています。

2017-02-01-02.jpg


多分ですが、CustomFormatで、"yyyy/MM"の様な日付を表示しない場合に起こります。
具体的には、月を変更した際、変更前の月の月末日が、変更後の月の月末日に存在しない時に起こります。
例えば、2016年3月(内部では31日) ⇒ 2016年2月(内部では31日のまま!?) といった場合です。

私の場合、Changeイベントをハンドリングできなかったので、DateTimePickerの派生クラスを作り、その中のChangeイベントで対応しました。

2017-02-01-03.jpg
①DateTimePickerのユーザコントロールを作って、、、


2017-02-01-05.jpg
②Changeイベントで、日付を明示的にプラスマイナス1するだけです。

Public Class NewDateTimePicker
Public Sub New()
AddHandler ValueChanged, AddressOf DateTimePickerEx_ValueChanged
Value = DateTime.Now
CustomFormat = "yyyy年MM月"
Format = System.Windows.Forms.DateTimePickerFormat.Custom
End Sub

Private Sub DateTimePickerEx_ValueChanged(sender As Object, e As EventArgs)
Value = Value.AddDays(Value.Day * -1 + 1)
End Sub
End Class



2017-02-01-04.jpg
③後は、既存のコントロールを置換えるだけでOKです。



2017-02-01-06.jpg
全然関係ないですが、.Net2012と2016、併用するのが細かいところで少し面倒、、、ショートカットとか違ったりするし、、、(´・ω・`)



【宣伝・・・(*´ω`)】

タイトルロゴ3

 システム葵では、個人様向けでも企業様向けでも、パソコン修理から、パソコン設定、パソコンの使い方、LAN環境構築、ソフトウェア開発まで、様々な実績がありますので、困ったことがあれば、お気軽にご相談下さい。
関連記事

テーマ : パソコンサポート
ジャンル : コンピュータ

コメントの投稿

非公開コメント

検索フォーム
最新記事
カテゴリ
全記事表示リンク

全ての記事を表示する

最新コメント
プロフィール

ITLife

Author:ITLife
システム葵新井聡太です。
東京都東村山市に生まれ、ここで育ち、ここで結婚し、システムエンジニア一筋で十数年やってきました。
ここでは主に、パソコンを中心にITに関わることを備忘録として残していきたいと思います。
少しでも来ていただいた方のお役に立てたら幸いです。
m(_ _)m

p.s
ここで紹介している内容は一例です。すべては、自己責任でお願いします。

カレンダー
10 | 2017/11 | 12
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -
訪問数
月別アーカイブ
リンク