سؤال

لم يقم كل من Visual Studio و Sharpdevelop في المندوبين بمعالجة الأحداث بنفس الطريقة. الطريقة التي يتم إعدادها مختلفة قليلا. هذا يجعل من الصعب استخدام VS في مكان واحد وتطوير في آخر (على نفس المشروع).

على سبيل المثال، في VB، يقوم Visual Studio بما يلي:

Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
    Me.DialogResult = System.Windows.Forms.DialogResult.OK
    Me.Close()
End Sub

و ...

Friend WithEvents OK_Button As System.Windows.Forms.Button

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

في #develop، يتم ذلك مثل هذا ...

Sub OK_ButtonClick(sender As Object, e As EventArgs)

End Sub

و ...

Private button1 As System.Windows.Forms.Button

ثم، في طريقة التهوية

AddHandler Me.button1.Click, AddressOf Me.OK_ButtonClick

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

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

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

المحلول

اصطحبهم من .Designer وأسلاكهم يدويا في المنشئ في الكود الخلف. يتم تجديد .designer بواسطة مصمم أي أداة تستخدمها

نصائح أخرى

يتم إصدار Sharpdeveld بموجب ترخيص LGPL، لذلك يمكنك دائما الحصول على المصدر وإجراء أي تغييرات تريدها.

بالنسبة للتغييرات التي تريدها، قد تحتاج إلى تغيير أو تجاوز أساليب InsertCommonenteTevent و CreateEeventheandler في فئة VBNESDesignergenerator. إنه في مشروع FormsDesigner.

يمكنك الحصول على المصدر هنا.

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

السبب في أن #develop تقوم بأشياء بالطريقة التي تقوم بها الأمر لأنها منفذ مباشر كيف يضيف C # معالجات الأحداث، على سبيل المثال،

AddHandler Me.button1.Click, AddressOf Me.OK_ButtonClick

هي مجرد ترجمة مباشرة من:

this.button1.Click += new EventHandler(OK_ButtonClick);

إذا كنت تستخدم C #، فسيقوم كل من Visual Studio و #Develope بتعامل مع إنشاء الحدث في الرمز بالتحديد بنفس الطريقة.

من الواضح أنه لا أحد يحضره إلى المرئي المشترك USECASE في Visual Basic في #DEVEOM، وكما قلت أعلاه، فهذه واحدة من تلك الحالات الهامشية التي قد تضطر فقط إلى تعديل الكود بنفسك، أو ربما حتى المساهمة مرة أخرى إلى المصدر #Develop لهذه الحالة بالذات.

أنا متأكد من أن أي شخص آخر يستخدم #develop for Visual Basic من شأنه أن يقدر ذلك.

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

#develop هو المصدر المفتوح. لذلك، من الناحية النظرية يمكنك تعديل قاعدة التعليمات البرمجية لنفس السلوك مثل Visual Studio.net ... لست متأكدا من مدى إشراك ذلك ولكنني اعتقدت أنني أشارك فكرتي ...

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

التحيات، فرانك ضد

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