2011-03-28 17 views
8

के साथ दोहराता है जब मेरे डेटटाइम पिकर पर महीने आगे या पिछड़ा तीर क्लिक किया जाता है, यह बार-बार वैल्यू चेंजेड ईवेंट को सक्रिय करता है। मुझे एप्लिकेशन को रोकने के लिए डीबगर का उपयोग करना होगा।डेटटाइम पिकर वैल्यू चेंज इवेंट महीने तीर

नोट: मेरा आवेदन तब तक ठीक काम करता है जब तक कि मैं किसी एक तारीख पर क्लिक करता हूं।

एमएसडीएन दस्तावेज नियंत्रण बनाने के लिए उदाहरण दिखाता है। लेकिन मैं को डेटटाइम पिकर 1_ValueChanged() नामक कोई भी उदाहरण फ़ंक्शन नहीं ढूंढ सकता। इस समारोह के लिए कंकाल मेरे लिए बनाया गया था, जब मैंने VS.NET2008 डिज़ाइनर में नियंत्रण पर डबल क्लिक किया था।

+0

कृपया 'dateTimePicker1_ValueChanged' के अंदर कोड दिखाएं। –

+0

क्या आप अपनी तिथि में दिनांक मान बदलना चाहते हैं टाइममिकर 1_ValueChanged() – thumbmunkeys

+0

अगर (dtpStart.Value> dtpEnd.Value) {MessageBox.Show ("छुट्टी की समाप्ति तिथि छुट्टी की तारीख से पहले नहीं हो सकती", "अमान्य प्रविष्टि", MessageBoxButtons.OK); dtpStart.Value = dtpEnd.Value; } –

उत्तर

3

डेव 81 ने मुझे सही रास्ते पर सेट किया। यदि आप जो कहते हैं वह करते हैं, तो समस्या यह है कि जब उपयोगकर्ता मैन्युअल रूप से मान बदलता है, तो CloseUp ईवेंट स्पष्ट रूप से ट्रिगर नहीं होता है। जिस तरह से मैंने इस समस्या को महीने परिवर्तन घटना की निरंतर पुन: फायरिंग के साथ ठीक किया है, क्या मेरा वैल्यू चेंजेड ईवेंट बदलना है ताकि कैलेंडर को गिराया न जाए। आईई .:

private bool _calendarDroppedDown = false; 
//called when calendar drops down 
private void dateStartDateTimePicker_DropDown(object sender, EventArgs e) 
{ 
    _calendarDroppedDown = true; 
} 
//called when calendar closes 
private void dateStartDateTimePicker_CloseUp(object sender, EventArgs e) 
{ 
    _calendarDroppedDown = false; 
    RefreshToolbox(null, null); //NOW we want to refresh display 
} 

//This method is called when ValueChanged is fired 
public void RefreshToolbox(object sender, EventArgs e) 
{ 
    if(_calendarDroppedDown) //only refresh the display once user has chosen a date from the calendar, not while they're paging through the days. 
    return; 
    ... 
} 
+2

जबकि मैंने इस विशिष्ट समाधान का उपयोग नहीं किया, इसने मुझे डेटपिकर्स पर IsDropDownOpen संपत्ति ढूंढने का नेतृत्व किया। इसका मतलब है कि आपको इन ईवेंट हैंडलर को लिखना नहीं है, लेकिन एक ही चीज़ को पूरा कर सकते हैं। – bio595

12

यह मुझे स्पष्ट नहीं है कि आप क्या हासिल करने की कोशिश कर रहे हैं लेकिन मेरा अनुमान यह है कि आप उदाहरण के लिए एक संदेशबॉक्स या कुछ इसी तरह दिखाना चाहते हैं। यदि ऐसा है तो कोई डर नहीं है क्योंकि आप एक ही मुद्दे का सामना कर रहे हैं, मैं कुछ समय पहले सोच रहा था। वैल्यू चेंज -Event का उपयोग करने के बजाय, क्लोजअप -event का उपयोग करें।क्लोजअप -इवेंट तब तभी ट्रिगर होता है जब उपयोगकर्ता अंततः एक मान का चयन करता है। आशा है कि यह वही था जो आप खोज रहे थे। उदाहरण के लिए अपडेट करना चाहते हैं उदाहरण के लिए यूआई में उपयोगकर्ता को दिखाए गए कुछ गणना आप वैल्यू चेंज -event का उपयोग करेंगे।

+0

Thanx –

+0

कोई समस्या नहीं है। क्या इससे आपकी समस्या हल हो गई? :) – Dave81

+0

आपको बहुत बहुत धन्यवाद ... :-) –

1

जब आप डेटेटिमपर के नीचे तीर पर क्लिक करते हैं, तो यह डिफ़ॉल्ट दिनांक प्रदर्शित करता है। जब आप डेटाटाइम पिकर में किसी भी तारीख पर क्लिक करते हैं, तो यह डेटाेटिमपिकर 1_valuechanged ईवेंट को सक्रिय करता है। जो कुछ भी आपने घटना के लिए कंकाल रखा है, तब ठीक काम करता है। यूनिकृष्णन सी

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