منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : في عدم تكرار كتابة أمر معين
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركاته

سبحان الله من فترة عن الفيجوال بيسك ، الشبكة عالم واسع ملهي مضيعة للوقت.

عموماً ،،، إخواني عندي برنامج ويوجد فيه هذان الأمران

كود :
Private Sub LinkLabel1_MouseHover(sender As Object, e As System.EventArgs) Handles LinkLabel1.MouseHover
        LinkLabel1.LinkColor = Color.Blue
    End Sub

      Private Sub LinkLabel1_MouseLeave(sender As Object, e As System.EventArgs) Handles LinkLabel1.MouseLeave
        LinkLabel1.LinkColor = Color.Black
    End Sub

المشكلة كما تعلمون أن الأداة LinkLabel لا يوجد بها أمر MouseHover ضمن خيارات الأداة فاضطر لكتابتها عن طريقة شاشة الشفرات ومنها كتابة ما ترونه في الأعلى من الشاشة حسب الشفرة المكتوبة وليس من الحصافة كتابة عشرون أمر لعشرون أداة LinkLabel كما في السابق السؤال هو :

ما هي الطريقة التي من خلالها كتابة شفرة واحدة استدعيها كلما احتجتها بحيث تكون عبارة عامة تصلح لجميع الـ LinkLabel التي في البرنامج.
(07-06-14, 02:41 AM)عبد الله كتب : [ -> ]...
المشكلة كما تعلمون أن الأداة LinkLabel لا يوجد بها أمر MouseHover ضمن خيارات الأداة فاضطر لكتابتها عن طريقة شاشة الشفرات ومنها كتابة ما ترونه في الأعلى من الشاشة حسب الشفرة المكتوبة وليس من الحصافة كتابة عشرون أمر لعشرون أداة LinkLabel كما في السابق السؤال هو :

ما هي الطريقة التي من خلالها كتابة شفرة واحدة استدعيها كلما احتجتها بحيث تكون عبارة عامة تصلح لجميع الـ LinkLabel التي في البرنامج.


لم أفهم قولك "الأداة LinkLabel لا يوجد بها أمر MouseHover ضمن خيارات الأداة"

.....

منقول مع تعديل بسيط ليناسب طلبك

ضع هذا الكود في أي فورم Form يوجد فيه أداة LinkLabel
كود :
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    LinkLabelMouseHandlers(Me)

End Sub

ضع هذا الكود في موديول Module
كود :
#Region " LinkLabelMouseHandlers "
Public Sub LinkLabelMouseHandlers(ByVal o As Object)
    For Each c As Object In o.Controls
        If TypeOf o Is ContainerControl Then LinkLabelMouseHandlers(c)
        If TypeOf c Is LinkLabel Then
            LinkLabel_MouseLeave(c, Nothing)
            AddHandler TryCast(c, LinkLabel).MouseEnter, AddressOf LinkLabel_MouseEnter
            AddHandler TryCast(c, LinkLabel).MouseLeave, AddressOf LinkLabel_MouseLeave
        End If
    Next
End Sub
Public Sub LinkLabel_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs)
    sender.LinkColor = Color.Blue
End Sub
Public Sub LinkLabel_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs)
    sender.LinkColor = Color.Black
End Sub
#End Region
ضع sub جديد فيه الاوامر التي تريد وكلما اردت استعمالها قم باستدعاء ال sub الدي فيه الاكواد
السلام عليكم...

1. اكتب أكواد الحدثين MouseHover و MouseLeave لأول LinkLabel (مثلاً LinkLabel1) كالتالي:

كود :
Private Sub LinkLabel1_MouseHover(sender As Object, e As EventArgs) Handles LinkLabel1.MouseHover
    CType(sender, LinkLabel).LinkColor = Color.Blue
End Sub

Private Sub LinkLabel1_MouseLeave(sender As Object, e As EventArgs) Handles LinkLabel1.MouseLeave
    CType(sender, LinkLabel).LinkColor = Color.Black
End Sub

2. ثم لديك خياران لربط بقية الـ LinkLabels بنفس الإجرائين:

أ. لكل LinkLabel: من صفحة الأحداث (Events) في نافذة الخصائص (Properties) افتح السهم الموجود أمام الحدث MouseHover و اختر الإجراء LinkLabel1_MouseHover، ثم افتح السهم الموجود أمام الحدث MouseLeave و اختر الإجراء LinkLabel1_MouseLeave.

- أو -

ب. في صفحة الكود اذهب إلى كود الإجراء LinkLabel1_MouseHover و أمام عبارة Handles LinkLabel1.MouseHover أضف فاصلة ثم اسم الـ LinkLabel الثاني (مثلاً LinkLabel2) ثم نقطة ثم كلمة MouseHover ليصبح شكل رأس الإجراء كالتالي:

كود :
Private Sub LinkLabel1_MouseHover(sender As Object, e As EventArgs) Handles LinkLabel1.MouseHover, LinkLabel2.MouseHover

و كرر نفس الأمر مع بقية الـ LinkLabels، ثم افعل نفس الأمر مع الحدث MouseLeave.

كود :
Private Sub LinkLabel1_MouseLeave(sender As Object, e As EventArgs) Handles LinkLabel1.MouseLeave, LinkLabel2.MouseLeave, LinkLabel3.MouseLeave

نرجو الاستفادة و السلام.
السلام عليكم ورحمة الله وبركاته

اشكرك أخي vbnet ،،، ففعلاً هذا ما أردته بالضبط وتحقق المطلوب فيه ، فبورك فيك.

أشكرك أخي vb_net على محاولة بذل المساعدة ولو تم وضع شفرة توضح فلعلنا نتعلم طريقة جديدة في الحل.

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

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

مثلا نعمل sub جديد و 2 ازرار مثلا و 2 لابل

ال sub الجديد سنجعل فيه كود يغير لنا تكست لابل كلما ضغطنا على اي زر

ال sub كالتالي

PHP كود :
sub change_text()

label1.text "vb4ever"
labael2.text "vbNet"

end sub 

وفي الازرار نضع هكدا بالتالي من اي زر نغير لا نحتاج كل زر نضع فيه نفس الاكواد

PHP كود :
change_text() 

اتمنى ان يكون ما شرحت مفيد وينفعك بالتوفيق
السلام عليكم

فعلاً هذا في كان الحالة تتم على أدوات ميعنة ثابتة ، لكن إن أردت عمل أحداث معينة على أكثر من أداة فلا ينفع هذا الحل.

شكراً أخي على التجاوب ، واسأل الله التوفيق لي ولك ولجميع المسلمين والعلم النافع.