سؤال

ولدي الطبقة التي تنفذ UserControl. في. NET 2005، يتم إنشاء طريقة التصرف تلقائيا في MyClass.Designer.cs ملف فئة الجزئي الذي يبدو مثل هذا:

  protected override void Dispose(bool disposing)
  {
     if (disposing && (components != null))
     {
        components.Dispose();
     }
     base.Dispose(disposing);
  }

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

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

المحلول

في مثل هذه الحالة أن أنتقل طريقة Dispose تم إنشاؤه إلى الملف الرئيسي وتمديده. البصرية ستوديو يحترم هذا.

وثمة نهج آخر ستكون باستخدام أسلوب الجزئية (C # 3.0).

نصائح أخرى

وجميع الطبقات Component تنفيذ حدث Disposed. يمكنك إضافة معالج حدث لهذا الحدث وتنظيف الامور هناك.

وعلى سبيل المثال، في UserControl الخاص بك يمكنك إضافة الطريقة التالية:

private void OnDispose(object sender, EventArgs e)
{
    // do stuff on dispose
}

وفي المنشئ (أو في Load معالج الحدث) إضافة السطر التالي:

Disposed += OnDispose;

وأعتقد في هذه الحالة، مولد رمز يكرم التعليمات البرمجية. يجب أن تكون آمنة لوضعها في codebehind.

في VS 2005 (و 2008) يمكنك تحديث طريقة Dispose وانها لن تحصل على إزالتها عند تحرير التحكم من المصمم.

ويمكنك تحريكه خارج من ملف .designer.cs وفي .cs الرئيسية الملف إذا كنت تريد. كما قيل بالفعل، لن تكون الكتابة.

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

وتأكد من تمرير استدعاء الأسلوب قاعدة وكذلك القيام التصرف الخاص بك وظيفيا أو عليك كسر وظيفة إلا إذا كنت تنفيذه تنفيذا كاملا

وأود أن أعتقد أن أنظف طريقة ليكون لديهم التحكم الخاصة بك الاشتراك في في التخلص الخاصة () الحدث والقيام تنظيف الخاص بك هناك.

وهناك حدث تفريغ لفي UserControl التي يمكنك استخدامها لتنظيف،

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