71

DateTimePickerデフォルト値が何もない、つまり日付がない aを表示できるようにしたいと考えています。

たとえば、タスクの開始日dtTaskStartと終了日dtTaskEndがありますが、終了日がわからず、最初は入力されていません。

yyyy-MM-dd両方のコントロールに のカスタム フォーマットを指定しました。

実行時に値をnull、または空の文字列に設定するとエラーが発生します。どうすればこれを達成できますか?

チェックボックスを使用してこのフィールドの有効化を制御することを検討しましたが、初期値を表示するという問題がまだあります..

編集:間違いなく質問DateTimePicker Null Value (.NET)
の複製ですが、私の問題に対して見つけた解決策はその質問の解決策ではないため、他の人が見つけられるようにここに残しておく必要があると思います..

4

8 に答える 8

59

次のようにプロパティを設定するだけです。

ユーザーが「クリアボタン」または「削除キー」を押したとき

dtpData.CustomFormat = " "  'An empty SPACE
dtpData.Format = DateTimePickerFormat.Custom

イベントDateTimePicker1_ValueChangedで行う

dtpData.CustomFormat = "dd/MM/yyyy hh:mm:ss"
于 2011-12-09T16:23:47.560 に答える
28

CustomFormatプロパティを使用して値を難読化し、チェックボックスcbEnableEndDateをフラグとして使用して、他のコードが値を無視する必要があるかどうかを示します。

If dateTaskEnd > Date.FromOADate(0) Then
    dtTaskEnd.Format = DateTimePickerFormat.Custom
    dtTaskEnd.CustomFormat = "yyyy-MM-dd"
    dtTaskEnd.Value = dateTaskEnd 
    dtTaskEnd.Enabled = True
    cbEnableEndDate.Checked = True
Else
    dtTaskEnd.Format = DateTimePickerFormat.Custom
    dtTaskEnd.CustomFormat = " "
    dtTaskEnd.Value = Date.FromOADate(0)
    dtTaskEnd.Enabled = False
    cbEnableEndDate.Checked = False
End If
于 2009-05-11T01:09:26.373 に答える
23

これは私にとってc#でうまくいきました

if (enableEndDateCheckBox.Checked == true)
{
    endDateDateTimePicker.Enabled = true;
    endDateDateTimePicker.Format = DateTimePickerFormat.Short;                
}
else
{
    endDateDateTimePicker.Enabled = false;
    endDateDateTimePicker.Format = DateTimePickerFormat.Custom;
    endDateDateTimePicker.CustomFormat = " ";
}

ナイスワン!

于 2010-06-18T14:48:40.277 に答える
4

空の日付値を表示したいときは、これを行います

            if (sStrDate != "")
            {
                dateCreated.Value = DateTime.Parse(sStrDate);
            }
            else
            {
                dateCreated.CustomFormat = " ";
                dateCreated.Format = DateTimePickerFormat.Custom;
            }

次に、ユーザーがコントロールをクリックすると、次のようになります。

            private void dateControl_MouseDown(object sender, MouseEventArgs e)
            {
                ((DateTimePicker)sender).Format = DateTimePickerFormat.Long;    
            }

これにより、空の日付値を表示して使用できますが、ユーザーは必要に応じて日付を変更できます。

sStrDate は、有効な日付文字列として既に検証されていることに注意してください。

于 2016-01-09T01:41:38.203 に答える