2012年7月17日火曜日

.NET カスタムコントロールの日付型初期値

こんばんは。部隊長です。 暑すぎてエアコン全開にしても32度しか下がりません。ECOです
本日もまたハマってしまったシリーズです。


環境はVB.NET NULLを許容するDataTimePickerを参考に、未入力が可能な日付コントロールを作成しているのですが、 
未入力時の初期値が何故か"2012/2/8"になっている事象が発覚(ずっとモヤモヤしていたのだがウヤムヤにして逃げt)

しかし初期値をもつプロパティを用意していて、Enter時に_isnullならMyBase.Valueを置き換えるようにしているのにも関わらず、まったく置き換わらない。なぜだ。
ソリューションの.Designer.vbファイルを見てみると・・・

        Me.cdtp_DateOpen.DefVal = New Date(2012, 2, 8, 0, 0, 0, 0)
これか・・・

作戦1。
    Public Property DefVal As Date = DateTime.Today
ダメ・・・

作戦2
    Public Sub New()

        ' この呼び出しはデザイナーで必要です。
        InitializeComponent()

        ' InitializeComponent() 呼び出しの後で初期化を追加します。
        Me.DefVal = DateTime.Today '<-これ
        
        AddHandler Me.Enter, AddressOf setDefaultValue

    End Sub
またダメ・・・くそう

作戦3
    Protected Overrides Sub InitLayout()
        MyBase.InitLayout()
        Me.DefVal = DateTime.Today '<-これ
    End Sub
ダメ・・・なんでー!

ここで、プロパティのDefaultValueAttributeを思い出す。 ・









…orz



長くなったので結果からいくとコレでいけました
  <categoryattribute("data")> _
    <defaultvalue("")> _
    Public Property DefVal As Date

日付型にキャストできないから当日日付になった・・・?


単に技術力の低さを露呈する記事にしかなっていないのはキニシナイ


また!

0 件のコメント:

コメントを投稿

とある規格化されたコード

世の中こんなもんまで規格化されていますよ、というお話 https://ja.wikipedia.org/wiki/ISO_5218 この辺が大変良くできた、ためになる(?)解説記事です。(長い https://qiita.com/aoshirobo/items/32deb...