سؤال

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

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

المحلول

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

شيء واحد يمكنك القيام به لجعل المستخدم الخاص بك تجربة تصميم أجمل أن تفعل شيئا من هذا القبيل ما يلي:

    [Description("This event is raised when the user presses the enter key while the control has focus."),
    Category("Key")]
    public event EventHandler EnterPressed;

"الوصف" بت يضع رسالة لطيفة في وصف لوحة العقار النافذة."فئة" بت يضعه في فئة معينة (الافتراضي هو Misc.في النهاية).

بالمناسبة, لم يتم تحديد لغة أو البيئة ، لذلك المذكورة أعلاه قد تحتاج إلى تعديل إذا لم يكن C# في Visual Studio 2005+.

نصائح أخرى

وعادة ما تستخدم هذا النمط، لإنشاء حدث مخصص في UserControls:

    #region MyEvent CUSTOM EVENT

    protected virtual void OnMyEvent(MyEventEventArgs e)
    {
        if (MyEvent != null)
            MyEvent(this, e);
    }

    public delegate void MyEventHandler(object sender, MyEventEventArgs e);
    public event MyEventHandler MyEvent;

    public class MyEventEventArgs : EventArgs
    {

    }

    #endregion MyEvent CUSTOM EVENT

وهذا له اصطلاح التسمية نفسها من أحداث مايكروسوفت، يمكنك اطلاق النار OnMyEvent من داخل التحكم الخاصة بك، يكون EventArgs العرف، والتعامل مع MyEvent من عناصر التحكم الأخرى.

ويجب أن يكون استخدام مندوب في UserControl ورفعه على الصفحة الرئيسية (صفحة aspx)، وإذا بهذه الطريقة لم تنجح، يجب أن تكون حذرا عند تسجيل UserControlID.It حاجة تختلف مع غيرها من UserControl.Each UserControl تحتاج إلى ID.

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