سؤال

الخطوط العريضة

حسنًا، لقد بحثت عن هذا في Google وأتوقع بالفعل وجود نسبة كبيرة من الدهون لا!! لكنني اعتقدت أنني يجب أن أسأل لأنني أعلم أنه في بعض الأحيان يمكن أن تكون هناك جوهرة صغيرة غريبة من المعرفة تكمن في أذهان الناس ^_^

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

ملحوظة: هذا هو التحكم القياسي للمستخدم (.ascx)، لا عنصر تحكم مخصص المقدمة.

الكود الحالي

فيما يلي تعريف الفصل والحدث:

[System.ComponentModel.DefaultEvent("OKClicked")]
public partial class AddressBox : System.Web.UI.UserControl
{
    public event EventHandler OKClicked;

النتيجة الحالية

الآن، عندما أقوم بالنقر المزدوج فوق عنصر التحكم عندما يكون على صفحة ASPX، يتم إنشاء ما يلي:

    protected void AddressBox1_Load(object sender, EventArgs e)
    {

    }

ليس تماما ما كنت أتوقع!لذا سؤالي:

هل من الممكن تحديد DefaultEvent لـ UserControl؟هل هو الاختراق؟وإذا كان [غير] مدعومًا، فهل هناك سبب؟


ملاحظة جانبية:كيف نضع الشرطة السفلية في الكود؟يبدو أنني غير قادر على وضع شار والهروب منه؟

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

المحلول

هنا أ ممكن الإجابة بدون اختبار (كما فعل مارتن).

في العاكس، سترى أن DefaultEventAttribute يسمح لنفسه بالتوريث.في العاكس، ترى أن فئة UserControl لديها الحدث الافتراضي الذي تم تعيينه على حدث التحميل.

لذا فإن السبب المحتمل هو أنه على الرغم من قيامك بتزيين عنصر تحكم المستخدم الخاص بك بالحدث الافتراضي OKClick، فقد لا يزال VS يفكر في أن الحدث الافتراضي يتم تحميله، حيث يتم توريثه من UserControl الذي يكون حدثه الافتراضي هو Load.

مجرد تخمين عالي المستوى لما قد يحدث.

نصائح أخرى

حسنًا، لقد تحققت من ذلك، الوراثة من WebControl بدلاً من UserControl..كل شيء سار على ما يرام.

يشبه دارين كوب يأخذ التاج لهذا واحد!شكرا على الادخال!

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