هل تريد إعادة كتابة عناصر التحكم القياسية مثل التحرير والسرد وما إلى ذلك؟

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

  •  10-07-2019
  •  | 
  •  

سؤال

لدي تحكم مخصص:إنها تعليمات برمجية مُدارة، والتي تصنف System.Windows.Forms.Control.

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

قد تؤدي إضافتها كعناصر تحكم فرعية إلى إنشاء بعض المشكلات الدقيقة، على سبيل المثال:

  • IE 6 حدد عناصر التحكم (مربع التحرير والسرد) فوق القائمة

  • لدي أشرطة تمرير في عنصر التحكم الخاص بي والتي تظهر لتمرير محتويات عنصر التحكم (المحتويات أكبر من عنصر التحكم نفسه)؛عندما يكون عنصر التحكم في الطفل بالقرب من حافة الشاشة، فأنا أرغب في عرض نصف الشاشة (أيمقطع) ذلك الطفل (أي.لجعل نصفها يقع خارج حافة الشاشة الفعلية)، ولكن لا يمكن تحديد موقع عنصر تحكم الطفل الحقيقي خارج حدود الأصل.

  • هل هناك مشاكل محتملة أخرى؟

عندما أستخدم IE7 للعرض http://www.tizag.com/htmlT/htmlselect.php (على سبيل المثال)، والتي تحتوي على مربعات التحرير والسرد وما إلى ذلك، وعندما أستخدم Spy++ للتجسس على IE7 عندما أفعل ذلك، أرى فقط نسخة نافذة/تحكم واحدة بدون أي عناصر فرعية (اسم فئتها هو "Internet Explorer_Server" ).

أعتقد أن هذا يعني أنه في IE7، وظيفة عرض مربع التحرير والسرد مدمجة في عنصر تحكم IE7 نفسه، وأن IE7 لا يستخدم عناصر التحكم القياسية كعناصر تحكم فرعية.

أسئلة:

  • هل من الأفضل إعادة استخدام عناصر التحكم القياسية كعناصر فرعية لعنصر تحكم مخصص، أم إعادة تنفيذ وظيفة عناصر التحكم القياسية ضمن عنصر التحكم المخصص نفسه؟
  • هل لديك أي تحذيرات (تحذيرات) لمشاركتها تتعلق بأي من السيناريوهين؟
  • إذا أردت إعادة تنفيذ وظيفة عناصر التحكم القياسية ضمن عنصر تحكم مخصص، فهل تعرف أي تعليمات برمجية موجودة (والتي تنفذ هذه الوظيفة) يمكنني إعادة استخدامها؟

إذا كان هذا الرمز موجودًا بالفعل، فلا أعرف كيفية البحث عنه (تجد عمليات البحث، على سبيل المثال، مربعات التحرير والسرد التي يرسمها المالك، وامتدادات لمربعات التحرير والسرد القياسية):ربما قلة من الناس يعيدون تطبيق الضوابط القياسية من الصفر؟


يحرر

لقد وجدت سؤالاً شبه ذي صلة: كيفية عرض عنصر التحكم ليبدو مثل ComboBox مع تمكين الأنماط المرئية؟

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

المحلول

نعم، يقوم Internet Explorer برسم عناصر التحكم باستخدام واجهات برمجة التطبيقات الخاصة بنظام التشغيل Windows.يمكنك القيام بذلك أيضًا باستخدام الأنواع المحددة في مساحة الاسم System.Windows.Forms.VisualStyles.

لقد فعل فريق IE ذلك لتجنب مشاكل الأداء المتمثلة في وجود العديد من عناصر التحكم، حيث يتلقى كل منها رسائل نافذة على الشاشة في وقت واحد.على سبيل المثال، عند النظر إلى صفحة StackOverflow.com هذه، أرى 30-40 عنصر تحكم في تسمية الرابط، و10 أزرار أو نحو ذلك، وأكثر من 20 تصنيفًا، وما إلى ذلك.

تجدر الإشارة إلى أن برنامج Zune، وهو عبارة عن تعليمات برمجية مُدارة بواسطة .NET، يستخدم أيضًا عناصر تحكم مخصصة؛إذا حاولت استخدام Spy++ على أي من عناصر التحكم، فسترى أنها ليست عناصر تحكم Win32 حقيقية.يمكنك استخدام برنامج Reflector الموجود على برنامج Zune لمعرفة ما يفعلونه بالضبط.إذا كنت أتذكر بشكل صحيح، فهم يستخدمون إطار عمل مخصص لواجهة المستخدم المُدارة والمضمن في برنامج Zune.

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

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