القيمة الافتراضية لـ DateTimePicker:كيفية تجنب ذلك؟

StackOverflow https://stackoverflow.com/questions/1400525

  •  05-07-2019
  •  | 
  •  

سؤال

حقائق:

  • لدي TabControl مع علامتي تبويب، كل علامة تبويب بها 2 DateTimePicker.
  • في حدث التحميل، قمت بتعيين قيمة كافة DTPs.
  • تحتوي جميع DTPs على ShowCheckBoxes مضبوطة على true ومحددة على false.
  • عندما أقوم بتنفيذ البرنامج، تكون DTPs في علامة التبويب الأولى على ما يرام، ولكن عندما أتحقق من DTPs في علامة التبويب الثانية، فإنها تعرض الوقت الحالي، وليس الوقت الذي قمت بتعيينه في حدث التحميل.

لماذا يحدث هذا؟كيف يمكنني تجنب ذلك؟

هل كانت مفيدة؟

المحلول 3

يتمثل الحل القبيح لهذه المشكلة في تنشيط علامة التبويب التي يوجد بها DTP قبل تغيير قيمها، شيء من هذا القبيل:

DateTime dat1 = DateTime.Today;
DateTime dat2 = dat1.AddDays(1).AddSeconds(-1);

dtpCreatedStart.Value = dat1;
dtpCreatedEnd.Value = dat2;
tbc.SelectTab(1);
dtpModifiedStart.Value = dat1;
dtpModifiedEnd.Value = dat2;
tbc.SelectTab(0);

نصائح أخرى

لقد اكتشفت ما هي المشكلة هنا.

ال Value تقوم الخاصية بتعيين قيمة جديدة فقط إذا كان DateTimePicker السيطرة مرئية.وإلا سيتم تجاهل الأمر.

حالة اختبار:

لا يعمل:

 this.picker = new DateTimePicker
        {
            Checked = false,
            Font = new System.Drawing.Font("Verdana", 9.75F),
            Format = System.Windows.Forms.DateTimePickerFormat.Time,
            Location = new System.Drawing.Point(5, 5),
            Name = "picker",
            ShowUpDown = true,
            Size = new System.Drawing.Size(120, 23),
            Visible = false
        };
        this.Controls.Add(this.picker);
        this.picker.Value = this.picker.Value.Date.AddHours(1);
        this.picker.Visible = true;

يعمل:

 this.picker = new DateTimePicker
        {
            Checked = false,
            Font = new System.Drawing.Font("Verdana", 9.75F),
            Format = System.Windows.Forms.DateTimePickerFormat.Time,
            Location = new System.Drawing.Point(5, 5),
            Name = "picker",
            ShowUpDown = true,
            Size = new System.Drawing.Size(120, 23),
            Visible = false
        };
        this.Controls.Add(this.picker);
        this.picker.Visible = true;
        this.picker.Value = this.picker.Value.Date.AddHours(1);

لا يبدو أن له أي علاقة بإضافة المنتقي برمجيًا على ما يبدو.

يتعلق الأمر بالخاصية التي تم التحقق منها في منتقي التاريخ.عادة ما يتم ضبطه على خطأ.على الأقل كانت هذه هي المشكلة بالنسبة لي.

بعد ضبط datetimepicker.checked على true، تم استرداد القيمة من الإعدادات.

يواجه DateTimePicker بعض المشكلات في تخزين قيمته واسترجاعها.لقد واجهت مشكلة عند ربط القيمة بتاريخ غير قابل للإلغاء - لقد حصلت على NullReferenceExeptions من وقت لآخر.لا فكرة لماذا أو متى.لقد حدث ذلك في بعض الأحيان وأدى إلى تعطل التطبيق.

لقد واجهت نفس المشكلة للتو باستخدام اثنين من DateTimePickers.لقد تمكنت من جعلهما يظهران القيمة الصحيحة عن طريق توليدهما ديناميكيًا وإضافتهما إلى النموذج.

إذا لم تتمكن من تشغيله، فيمكنك دائمًا تجربة استخدام منتقي مختلف.ال أي + وقت (TM) منتقي التاريخ/منتقي الوقت AJAX أداة التقويم يسحب قيمته من الحقل المرتبط، لذلك إذا قمت بتهيئة الحقل بقيمة، أو قمت بتغيير حقل ليكون له قيمة (كما هو الحال في التحميل)، فهذا ما ستحصل عليه عند عرض المنتقي.وإذا كان لديك مشاكل معها، ما عليك سوى إرسال رسالة عبر صفحة الاتصال، وسيتم معالجتها في أسرع وقت ممكن.

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