سؤال

لدي datetimepicker في c#. عند النقر فوقه ، يتم توسيع نطاقه لإظهار تقويم شهري ، عندما أنقر على السهم الأيسر للعودة لمدة شهر ، فإنه يغير القيمة ويتصل بالحدث الخاص بي. يتضمن الحدث الكثير من التعليمات البرمجية التي يجب تضمينها هنا ولكنها تستدعي العديد من الوظائف التي لا داعي للقول.
المشكلة التي أواجهها هي أنه عندما أنقر على ذلك السهم الأيسر ، فإنه يتعثر في نوع من الحلقة ويستمر في الهبوط خلال الأشهر ولا يمكنني إيقافه. تحتوي إحدى الوظائف التي يتم استدعاؤها على تطبيق. أي فكرة لماذا هذا يحدث؟

يمكنني تكراره أحيانًا باستخدام هذا الرمز ، وأحيانًا يفعل ذلك عدة مرات ، وأحيانًا يتعثر في الحلقة.

private void DateTimePickerValueChangedEvent(object sender, EventArgs e) 
{ 
afunction(); 
} 

private void afunction() 
{ 
listView1.Clear(); 
panel1.Visible = true; 
Application.DoEvents(); 
} 
هل كانت مفيدة؟

المحلول

ولدي أيضا نفس المشكلة. في حالتي ، بدلاً من استدعاء Doevents ، أقوم بتحديث عرض تقرير Crystal. الحل الوحيد الذي وجدته هو تحديث وجهة نظري في الحدث المقرب بدلاً من Valuechanged أو TextChanged.

سكوت ، كيف تصححت مشكلتك أخيرًا؟

نصائح أخرى

حدث DateTimePicker Valuechanged هو عربات التي تجرها الدواب. لكل فريق نماذج Microsoft Windows في هذه الصفحة https://connect.microsoft.com/visualstudio/feedback/details/1290685/debugging-datetimepicker-event-hangs-vs:

"يقوم عنصر تحكم DateTimePicker بتثبيت خطاف الماوس كجزء من وظائفه ، ولكن عندما يتوقف تطبيق الأخطاء على تطبيق WinForms ، فإنه يتيح إمكانية حدوث طريق مسدود إذا حدث ذلك في الحصول على رسالة ماوس. نتيجة لتصميم DateTimePicker. يتم تثبيت خطاف الماوس عندما يتم النقر فوق المنسدلة لعرض التقويم. من الممكن معالجة هذه المشكلة وسنقوم بتحديث هذا الموضوع بمزيد من المعلومات إذا تمكنا من إتاحة إصلاح. "

دون رؤية أي من الكود ، جرب هذه الخطوات:

  1. التعليق على معالج الحدث بأكمله لمعرفة مدى سرعة تشغيله دون أي شيء مرتبط به.
  2. خطوط عدم الرضا واحدة تلو الأخرى لمعرفة أي منها تسبب معظم المشاكل.
  3. تحليل هذه المكالمات الطريقة.
  4. ...
  5. ربح!

يمكنك تجربة اثنين من الأشياء. تخلص من doevents داخل changedevent. استدعاء doevents داخل وظيفة منفصلة بعد فترة من الزمن (thread.sleep ()؟).

أعلم أن doevents تسبب مشاكل لكنني نادراً ما أستخدمها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top