2009-05-11 8 views
52

मैं DateTimePicker प्रदर्शित करने में सक्षम होना चाहता हूं जिसमें कुछ भी नहीं है, यानी कोई तारीख नहीं है।मैं डेटटाइम पिकर को खाली स्ट्रिंग कैसे प्रदर्शित कर सकता हूं?

उदाहरण के लिए, मेरे पास एक कार्य दिनांक dtTaskStart है और एक कार्य के लिए dtTaskEnd की समाप्ति तिथि है, लेकिन अंत तिथि ज्ञात नहीं है, और प्रारंभ में पॉप्युलेट नहीं है।

मैंने दोनों नियंत्रणों के लिए yyyy-MM-dd का एक कस्टम प्रारूप निर्दिष्ट किया है।

मूल्य को null पर सेट करना, या रनटाइम पर एक खाली स्ट्रिंग एक त्रुटि का कारण बनती है, तो मैं इसे कैसे पूरा कर सकता हूं?

मैं एक चेकबॉक्स का उपयोग कर इस क्षेत्र के लिए सक्षम करने को नियंत्रित करने पर विचार किया है, लेकिन अभी भी एक प्रारंभिक मूल्य को प्रदर्शित करने का मुद्दा है ..

संपादित करें:
यकीनन सवाल DateTimePicker Null Value (.NET) का डुप्लिकेट है, लेकिन समाधान मैं मेरी समस्या के लिए पाया गया है कि प्रश्न के लिए एक समाधान नहीं है, इसलिए मुझे लगता है कि यहाँ दूसरों को खोजने के लिए रहना चाहिए ..

+0

संभव डुप्लिकेट [DateTimePicker व्यर्थ मान (नेट)] (http://stackoverflow.com/questions/284364/datetimepicker-null-value-net) – bluish

उत्तर

26

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

ट्रिक्स/हैकी बी प्रभावी :) –

19

इस ग # के लिए मेरे लिए काम किया

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

अच्छा एक लोग!

40

बस संपत्ति इस प्रकार सेट:

उपयोगकर्ता प्रेस "स्पष्ट बटन" या "कुंजी हटाना" जब

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

कर DateTimePicker1_ValueChanged घटना पर

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

@threeFourOneSixOneThree - मुझे लगता है क्योंकि यह सबसे उपयुक्त प्रतीत होता है। और मेरे पास टिप्पणी करने की प्रतिष्ठा योग्यता नहीं थी। – Jon

+0

यह 'dtpData.Format = DateTimePickerFormat.Short' (या कुछ अन्य प्रारूप) को सेट करने के लिए भी काम करता है 'dtpData.CustomFormat =" dd/MM/yyyy hh: mm: ss "' – mbomb007

5

कर मामले किसी में फॉर्म लोड इवेंट के दौरान डेटाटेमिपर नियंत्रण को खाली करने के साथ एक समस्या है, और उसके बाद वर्तमान दिनांक को आवश्यकतानुसार दिखाएं, यहां एक उदाहरण है:

सुनिश्चित करें कि CustomFormat = " " दोनों तरीकों में रिक्त स्थान (कम से कम एक अंतरिक्ष) के एक ही नंबर है

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

मुझे लगता है कि आपको अपनी स्वरूपण को संपादित करने की आवश्यकता है यहाँ थोड़ा सा – Polynomial

+1

मैंने पहले से ही कोशिश की है। बहुत मदद नहीं मिली – Catherine

+0

@ कैथरीन मानक चर के नामों को लोअरकेस अक्षर से शुरू करने के लिए है। इसमें बदलना स्वरूपण को बेहतर बनाता है, क्योंकि यही है जो स्टैक ओवरफ़्लो .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

बुनियादी अवधारणा दूसरों द्वारा बताई गई है।लेकिन जब आपके पास एकाधिक डेटटाइमर है तो इस तरह कार्यान्वित करना आसान है।

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

इसे चेक करने enter image description here

की
संबंधित मुद्दे

 संबंधित मुद्दे