سؤال

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

التحيات.

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

المحلول

ظننت أنها أكثر أو أقل من فرز سطح المكتب مصمم القضايا في عام 2005.هل حاولت المعتاد الجناة ؟

  • لا مجردة أنواع الرقابة
  • لا منشئ الحجج في أي شكل
  • Initialisation انتقلت إلى Form_Load بدلا من المنشئ
  • لا ضوابط في نفس المشروع كما usercontrol/شكل أنها وضعت داخل
  • إغلاق كافة الوثائق -> تنظيف -> إعادة بناء
  • إعادة تشغيل مقابل

وبدا لي أن أعتقد أنه طالما أنك فعلت كل ما سبق انها عملت.....في الغالب.

نصائح أخرى

أنا أدرس نحو (المسلم قريبا-إلى-- - - obsoleted) MCAD و جزء من WinForms العنصر البصري الإرث.

أنا شخصيا ليس لديه مشاكل كبيرة مع ذلك ، ومع ذلك ، هناك هي الاعتبارات التي تأخذ في الاعتبار.

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

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

أنا شخصيا لم أر أي أدلة تشير إلى أنه قد تم "منبوذة". AFAIK, ما زال الممارسة الجيدة لممارسة رمز وإعادة استخدامها حيثما أمكن.البصرية الميراث توفر ذلك.

أقترح إنشاء سؤال جديد مع الفعلية المشاكل التي تواجه مع نموذج التعليمات البرمجية ؟ يمكننا بعد ذلك ننظر في الأمر لمعرفة ما إذا كان يمكننا الحصول على عمل و شرح لماذا :)

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

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

مشكلة أخرى أستطيع أن أتذكر كانت الأدوية في شكل دروس

public class MyForm<MyObject> : Form

هذا لن يعمل

أنا غالبا ما تتعثر هذه المشاكل في Visual Studio.في كثير من الحالات MSVS مصمم نماذج فشل في تقديم النموذج بشكل صحيح.مرة أخرى في الأيام التي عملت مع WinForms كان لي أن تفعل كل نوع من غريب الحيل لتمكين بعض السيناريوهات المعقدة.ومع ذلك أعتقد أن استخدام visual الميراث هو مفيد جدا و لا ينبغي أن يكون بعيدا بغض النظر عن MSVS مصمم البق.

أعتقد أنني وجدت طريقة كيفية تجنب هذه المشكلة.

لا ربط الحدث Form_Load في الأصل شكل هذا سوف كسر المصمم.

أيضا لا تأخذ الافتراضية فارغة منشئ بعيدا عن Visual Studio في النموذج الأصلي.إذا كنت تريد أن يكون حقن التبعية إنشاء آخر منشئ.

مثل هذا:

public ProductDetail()
{
    InitializeComponent();
}

public ProductDetail(ISupplierController supplierController) : base()
{
    InitializeComponent();
    this.supplierController = supplierController;
}

ثم يمكنك لا تزال تفعل هذا من ورث شكل:

public NewProduct(ISupplierController supplierController)
    : base(supplierController)
{
    InitializeComponent();
}

هذا عملت بالنسبة لي حتى الآن, و كان غريب مصمم القضايا أيضا.

هتاف دانيال

قراءة هذا: http://cs.rthand.com/blogs/blog_with_righthand/archive/2005/11/10/186.aspx

AFAIK ، لا تزال هناك مشاكل مع Visual الميراث و الكائنات التي تعتمد على مجموعات من عناصر التصميم ، عادة الشبكة الضوابط الخ.أعتقد أن مايكروسوفت لا تزال لديها إزالة إمكانية تغيير f.ex.أ GridView في ورثت شكل/usercontrol.... الخولكن عناصر أخرى مثل مربع نص في النموذج ، UserControl, لوحة إلخ.يجب أن تعمل كما هو متوقع.

أنا حتى الآن لا توجد مشكلة مع السادس باستخدام 3rd الطرف الشبكة الضوابط نفسي, ولكن عليك أن تكون حذرا ، على وجه الخصوص ، إزالة عناصر من مجموعات يجب تجنبها.

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