سؤال

أنا أعمل على العملاء تحكم ملقم الذي يمتد إلى عنصر تحكم آخر.لا توجد مشكلة مع ربط عناصر التحكم الأخرى في النموذج.

في vb.net: Parent.FindControl(TargetControlName)

أود أن يمر طريقة التحكم في ASPX العلامات.

على سبيل المثال: <c:MyCustomerControl runat=server InitializeStuffCallback="InitializeStuff">

إذا حاولت استخدام التفكير للوصول إلى طريقة معينة من الوالدين.

شيء مثل (في VB)

Dim pageType As Type = Page.GetType
Dim CallbackMethodInfo As MethodInfo = pageType.GetMethod( "MethodName" )

'Also tried 
sender.Parent.GetType.GetMethod("MethodName")
sender.Parent.Parent.GetType.GetMethod("MethodName")

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


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

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

المحلول

إذا كنت تريد أن تكون قادرة على تمرير الأسلوب في ASPX العلامات, تحتاج إلى استخدام Browsable السمة في التعليمات البرمجية الخاصة بك على الحدث.

VB.NET

<Browsable(True)> Public Event InitializeStuffCallback

C#

[Browsable(true)]
public event EventHandler InitializeStuffCallback;

المرجع:وقت التصميم سمات المكونات و BrowsableAttribute الدرجة

كل الأحداث, خصائص, أو أيا كان يجب أن تكون في التعليمات البرمجية-خلف الرقابة مع للتصفح سمة تجعل من ذلك يمكنك تغييره في الوسم رمز.

نصائح أخرى

عادة أنت لا تحتاج إلى الحصول على طريقة عن طريق التفكير.داخل عنصر تحكم المستخدم الخاص بك, تعريف الحدث العام (آسف أنا لا أعرف vb الجملة لذلك هذا سوف يكون في c#)

public event EventHandler EventName;

الآن داخل صفحة aspx أو أي حاوية التحكم المستخدم تحديد المحمية الأسلوب الذي يطابق EventHandler:

protected void MyCustomerControl_MethodName(object sender, EventArgs e) { }

الآن, داخل العلامات الخاص بك ، يمكنك استخدام

<c:MyCustomerControl id="MyCustomerControl" runat=server OnEventName="MyCustomerControl_MethodName">

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

buyutec و جيسي ديرينغ على حد سواء لديهم إجابة مقبولة.

[Browsable(true)]  

يتيح لك رؤية العقار في الإطار "خصائص".ومع ذلك ، فإن الحدث لا تظهر ، مما يجعل لا فرق بالنسبة لي.

الشيء الذي يغفل في وقت سابق كان حقيقة أنه عند الإشارة السيطرة حتى من الوسم ، prep-تنتهي.

كل ASP.NET الصفحة فئة خاصة بها ورثت من Page كما في:

class MyPage : Page

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

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

ولكن...مثل أي شخص آخر ، مثل هذه الحالة هو ما الأحداث هي.

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