2009-05-11 32 views
52

DateTimePickerを表示するには、デフォルト値が「なし」、つまり日付がないことが必要です。DateTimePickerに空の文字列を表示させるにはどうすればよいですか?

たとえば、タスクの開始日はdtTaskStartで、終了日はdtTaskEndですが、終了日は不明で、最初に入力されません。

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

nullに値を設定するか、実行時に空の文字列を設定するとエラーが発生するので、どのようにすればいいですか?

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

編集:おそらく
質問DateTimePicker Null Value (.NET)の複製が、かどうかを示すフラグとしてチェックボックスcbEnableEndDateを使用して、

+0

可能複製をオンにすると:/ /stackoverflow.com/questions/284364/datetimepicker-null-value-net) – bluish

答えて

26

CustomFormatプロパティを使用して値を難読化..私は私の問題が見つかり解決策は、その質問のためのソリューションではありませんので、私はそれを見つけるために、他の人のためにここに残るべきだと思います他のコードは値を無視:

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 
+1

Tricksy/hacky b効果的です。 :) –

19

これは、C#

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

素敵な1人の男のために私のために働きました!次のように

40

ちょうどプロパティを設定します

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

DateTimePicker1_ValueChangedイベントで

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

を行う場合の誰に

dtpData.CustomFormat = "dd/MM/yyyy hh:mm:ss" 
+0

@threeFourOneSixOneThree - 私はそれが最も適切であるように思われました。そして、私はコメントする評判の資格を持っていませんでした。 – Jon

+0

また、 'dtpData.CustomFormat =" dd/MM/yyyy hh:mm:ss "' – mbomb007

5

行いますフォームのロードイベント中にdatetimepickerコントロールを空白に設定し、必要に応じて現在の日付を表示する際の問題があります。例:

CustomFormat = " "は両方の方法でスペース(少なくとも1つのスペース)の同じ数を持っていることを確認してください

Private Sub setDateTimePickerBlank(ByVal dateTimePicker As DateTimePicker)  

    dateTimePicker.Visible = True 
    dateTimePicker.Format = DateTimePickerFormat.Custom 
    dateTimePicker.CustomFormat = " " 
End Sub 


Private Sub dateTimePicker_MouseHover(ByVal sender As Object, ByVal e As 
        System.EventArgs) Handles dateTimePicker.MouseHover 

    Dim dateTimePicker As DateTimePicker = CType(sender, DateTimePicker) 
    If dateTimePicker.Text = " " Then 
     dateTimePicker.Text = Format(DateTime.Now, "MM/dd/yyyy") 
    End If 
End Sub 
+1

の代わりに 'dtpData.Format = DateTimePickerFormat.Short'(または他の形式)を設定するように動作します。あなたの書式を編集する必要があると思いますここに少し。 – Polynomial

+1

私はすでに試しました。 did not much much – Catherine

+0

@Catherine変数名は小文字で始まります。これを変更すると、スタックオーバーフローで.NETに期待されるため、書式が改善されます。 – mbomb007

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は有効な日付文字列としてすでに検証されています。

0

基本的な考え方は、他の人によって同じです。しかし、複数のdateTimePickerを持っているときに、この方法を実装する方が簡単です。

dateTimePicker1.Value = DateTime.Now; 
dateTimePicker1.ValueChanged += new System.EventHandler(this.Dtp_ValueChanged); 
dateTimePicker1.ShowCheckBox=true; 
dateTimePicker1.Checked=false; 


dateTimePicker2.Value = DateTime.Now; 
dateTimePicker2.ValueChanged += new System.EventHandler(this.Dtp_ValueChanged); 
dateTimePicker2.ShowCheckBox=true; 
dateTimePicker2.Checked=false; 

値変更イベント機能

 void Dtp_ValueChanged(object sender, EventArgs e) 
     { 
      if(((DateTimePicker)sender).ShowCheckBox==true) 
      { 
       if(((DateTimePicker)sender).Checked==false) 
       { 
        ((DateTimePicker)sender).CustomFormat = " "; 
        ((DateTimePicker)sender).Format = DateTimePickerFormat.Custom; 
       } 
       else 
       { 
        ((DateTimePicker)sender).Format = DateTimePickerFormat.Short; 
       } 
      } 
      else 
      { 
       ((DateTimePicker)sender).Format = DateTimePickerFormat.Short; 
      } 
     } 

場合未確認 enter image description here

(HTTP [DateTimePickerのNULL値(.NET)]の enter image description here

関連する問題